【发布时间】:2016-09-27 23:14:13
【问题描述】:
首先,很抱歉这个奇怪的标题。事情是这样的: 我在一家在线商店工作,该商店在亚马逊上销售产品。由于我们销售不同商品的套装,因此我们将多套商品中的相同商品发送到亚马逊 FBA。为了给出所有集合中一项的总和,我编写了以下查询:
SELECT
SUM(nQuantity)
AS [total]
FROM [amazon_fba]
INNER JOIN (SELECT
[cArtNr]
FROM [tArtikel]
INNER JOIN (SELECT
[kStueckliste]
FROM [tStueckliste]
WHERE [kArtikel] = (SELECT
[kArtikel]
FROM [tArtikel]
WHERE [cHAN] = 12345)) [bar]
ON [tArtikel].[kStueckliste] = [bar].[kStueckliste]) [foo]
ON [amazon_fba].[cSellerSKU] = [foo].[cArtNr]
cHAN=12345 部分仅用于选择一个我们想知道项目总数的特定项目。这个查询本身工作正常,所以这不是问题。
不过,我也知道所有属于套装的产品都有[tArtikel].[kStueckliste]=0,理论上这使得识别它们变得非常容易。这让我想到,我可以使用此查询立即生成所有这些产品的列表及其各自的总数,例如:
kArtikel | total
=================
01234 | 23
56789 | 42
所以基本上我需要类似的东西
foreach (
select [kArtikel]
from [tArtikel]
where [tArtikel].[kStueckliste]=0
) do (
< the query I made >
)
因此我尝试了以下语句:
SELECT
SUM(nQuantity)
AS [total]
FROM [amazon_fba]
INNER JOIN (SELECT
[cArtNr]
FROM [tArtikel]
INNER JOIN (SELECT
[kStueckliste]
FROM [tStueckliste]
INNER JOIN (SELECT
[kArtikel]
FROM [tArtikel]
WHERE [tArtikel].[tStueckliste] = 0) [baz]
ON [tStueckliste].[kArtikel] = [baz].[kArtikel]) [bar]
ON [tArtikel].[kStueckliste] = [bar].[kStueckliste]) [foo]
ON [amazon_fba].[cSellerSKU] = [foo].[cArtNr]
这并没有像我希望的那样返回总和列表,而是给了我想要创建的所有总和的总和。 由于我对 SQL 很陌生(大约两周后),我既不知道该做什么,也不知道我的错误在哪里,也不知道我应该使用什么措辞来搜索我的方式——因此这篇文章的标题很奇怪。因此,如果有人可以帮助我和/或指出我正确的方向,我会非常高兴:)
【问题讨论】:
标签: sql-server database join sum