Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用求和运算符的不同查询不起作用?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 使用求和运算符的不同查询不起作用?

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的一些数据

我有一个问题,我有一个查询,我应该在哪里提取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的一些数据

   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_数量)。希望这能说明我需要什么!!