Sql 使用求和运算符的不同查询不起作用?
我有一个问题,我有一个查询,我应该在哪里提取PIX_SKU的总计组。我的问题是数量增加了一倍,任何帮助都将不胜感激Sql 使用求和运算符的不同查询不起作用?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个问题,我有一个查询,我应该在哪里提取PIX_SKU的总计组。我的问题是数量增加了一倍,任何帮助都将不胜感激 SELECT DISTINCT(A2.PIX_SKU), A2.PIX_DATE, SUM(A1.ID_QTY) AS TOTAL FROM IDCASE00_EXTRACT A1,PX_CLEAN A2 WHERE A1.ID_SKU = A2.PIX_SKU GROUP BY A2.PIX_SKU, A2.PIX_DATE 下面是表IDCASE00_EXTRACT的一些数据
SELECT DISTINCT(A2.PIX_SKU), A2.PIX_DATE, SUM(A1.ID_QTY) AS TOTAL
FROM IDCASE00_EXTRACT A1,PX_CLEAN A2
WHERE A1.ID_SKU = A2.PIX_SKU
GROUP BY A2.PIX_SKU, A2.PIX_DATE
下面是表IDCASE00_EXTRACT的一些数据
id_sku id_ty
301110 39 8 3266
301110 39 8 1788
301112 90 1 4
301185 20 6 6580
301185 20 6 22028
下面是表PX_CLEAN的一些数据
pix_sku pix_date
301110 39 8 20120203
301112 90 1 20120204
301185 20 6 20120320
301110 39 8 20120301
301185 20 6 20120209
你的加入是个问题 在
IDCASE00\u EXTRACT
中,您有两行,其中id\u sku=301110 39 8
在PX_CLEAN
中,还有两行,其中pix_sku=301110 39 8
因此,当您在id\u sku=pix\u sku
上加入时,您将生成4行(2*2)
因此,连接两个表的匹配当前不是唯一的-在
IDCASE00\u EXTRACT
中是否有一个日期应与PX\u CLEAN
中的pix\u日期相匹配?此查询应获得每个SKU的总数:
SELECT Q.ID_SKU, SUM(Q.ID_qty) AS TOTAL
FROM IDCASE00_EXTRACT AS Q
GROUP BY Q.ID_SKU
你打算如何处理pix_日期?这些数据有什么用
我能想到的唯一其他信息是:
SELECT T.ID_SKU, T.TOTAL, PX.pix_date
FROM
(
SELECT Q.ID_SKU, SUM(Q.ID_qty) AS TOTAL
FROM IDCASE00_EXTRACT AS Q
GROUP BY Q.ID_SKU
)
AS T JOIN PX_CLEAN AS PX ON (T.ID_SKU = PX.pix_sku)
无论如何,您必须澄清要检索的信息。此查询:
SELECT pix_sku, SUM(id_qty) AS QuantityTotal
FROM @PX_CLEAN AS P
JOIN @IDCASE00_EXTRACT AS Q ON (Q.id_sku = P.pix_sku)
GROUP BY pix_sku
将获得这些结果:
- SKU |总计
- 301110 39 8|10108
- 301112 90 1 | 4
- 301185206 | 57216
对于每个SKU,您有一个总数
你到底想从pix_约会中得到什么?聚合时,您只有一个sku,但每个sku仍有几个日期。你想得到什么?你想知道什么
您应该停止思考独特的功能。此函数仅从查询结果中删除完全相同的行。只有当你得到你想要的结果时,它才有帮助——但是有多行是相同的。查询引擎不会“理解”您的愿望,只需为每个SKU返回一行,其中包含distinct,这只能通过聚合(group by)实现 你能把这两个表分别贴上一些样本数据吗?我可以看到你的问题有以下问题:1。您的数据示例仅显示一个表,但查询引用了两个表。2.您已经将问题标记为与两个不同的数据库系统(MySQL和SQL Server)相关。这是故意的还是你把mysql误认为是mssql?3.您正在使用DISTINCT
,就好像它可以应用于一个列,而它不能DISTINCT
始终适用于您正在提取的整行列。文克,我发布了这两个表。安德烈,1。我现在把这两张桌子都贴上了。2.我不小心标记了MySql。3.我该怎么做?Re:“我该怎么做?”-如果您希望在输出中包含不同的PIX_SKU,则不应在GROUP BY中包含PIX_日期。如果您希望在输出中包含一些PIX_日期值,同时坚持使用不同的PIX_SKU,您可能应该使用聚合来提取PIX_日期,例如MAX(PIX_日期)
或MIN(PIX_日期)
。还要注意这两个答案。我需要获得PIX_SKU的不同结果,我需要显示PIX_SKU、PIX_日期和总和(ID_数量)。希望这能说明我需要什么!!