2013-11-04 96 views
-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<[email protected]     
INNER JOIN stktype ON whbal.stock_type=stktype.stock_type 
WHERE whbal.customer BETWEEN @cust1 AND @cust2 AND [email protected] 
GROUP BY whbal.customer, customer.customer, customer.imp_license_no, customer.psq_level 

结果:

不要任何人知道什么是问题和解决方案,请评论和指导。 提前感谢和感谢。

+0

或者,可替换地,数据产生相同的结果两个'仓库= 'SKW''和'仓库=' EKW “'。如果您提供一个小数据样本并显示结果,那将会很有帮助,因为在所有列上都有一个表别名,包括“仓库”。 –

+0

@GordonLinoff请参考我编辑的问题。 EUNOS色谱柱位于SENOKO色谱柱的最右侧。谢谢 – user2901955

+0

你没有做任何事情将子查询链接到主要查询中的任何内容......为什么应该有任何连接? – DarkSquirrel42

回答

1

哦,你的问题很简单。您的查询与外部查询无关,因此您在整个whbal表中获得的总数为Senkoku(可能为EUNO)。

阅读您的查询,我觉得这是你想要的。

我想你需要在子查询中的关联子句,在这里你将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 
+0

我尝试连接它们,但他的结果仍然相同:从whbal INNER JOIN客户开始whbal.customer = customer.customer WHERE warehouse ='SKW'和whbal.customer BETWEEN @ cust1 AND @ cust2)AS SENOKO – user2901955