-1

下面的查询用于从数据库中检索记录以显示在报告中。但是 SENOKO 和 EUNOS 列在每一行中显示重复的总数。这似乎子查询未连接到主查询导致未进行过滤。

SELECT whbal.customer, customer.imp_license_no, customer.psq_level, 
       (SELECT SUM(CONVERT(DECIMAL(8,3),(CONVERT(DECIMAL(8, 3), whbal.qty_good) + CONVERT(DECIMAL(8, 3), whbal.qty_slack)) * CONVERT(DECIMAL(8, 3), whbal.std_weight) / 1000)) 
        FROM whbal WHERE warehouse='SKW') AS SENOKO
       (SELECT SUM(CONVERT(DECIMAL(8,3),(CONVERT(DECIMAL(8, 3), whbal.qty_good) + CONVERT(DECIMAL(8, 3), whbal.qty_slack)) * CONVERT(DECIMAL(8, 3), whbal.std_weight) / 1000)) 
        FROM whbal WHERE warehouse='EKW') AS EUNOS
FROM customer 
INNER JOIN whbal ON whbal.customer=customer.customer AND whbal.date_create<=@date1                   
INNER JOIN stktype ON whbal.stock_type=stktype.stock_type
WHERE whbal.customer BETWEEN @cust1 AND @cust2 AND whbal.stock_type=@type
GROUP BY whbal.customer, customer.customer, customer.imp_license_no, customer.psq_level

结果:

有谁知道是什么问题和解决方案,请评论和指导。提前感谢并感谢。

4

1 回答 1

1

哦,你的问题很简单。您的查询与外部查询根本不相关,因此您获得了整个表的总数Senkoku(并且可能是)。EUNOwhbal

阅读您的查询,我认为这就是您想要的。

我认为您需要在子查询中使用相关子句,在其中将行绑定whbal到其中一个外部表中的某个列。不知道您真正想要什么或您的数据结构,我无法提出特定条件。

编辑:

连接它们的正确方法是:

   (SELECT SUM(CONVERT(DECIMAL(8,3),(CONVERT(DECIMAL(8, 3), whbal.qty_good) + CONVERT(DECIMAL(8, 3), whbal.qty_slack)) * CONVERT(DECIMAL(8, 3), whbal.std_weight) / 1000)) 
    FROM whbal
    WHERE warehouse = 'SKW' and whbal.customer = customer.customer
   ) AS SENOKO
于 2013-11-04T01:14:28.770 回答