【问题标题】:Sub query did not connected to main query子查询未连接到主查询
【发布时间】:2013-11-14 14:56:34
【问题描述】:

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

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

结果:

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

【问题讨论】:

  • 或者,数据对warehouse = 'SKW'warehouse = 'EKW' 产生相同的结果。如果您提供一个小数据样本并显示结果,那将很有帮助,因为在所有列上都有一个表别名,包括 warehouse
  • @GordonLinoff 请参考我编辑的问题。 EUNOS 柱位于 SENOKO 柱的最右侧。谢谢
  • 您没有将子查询链接到主查询中的任何内容...为什么要建立任何连接?
  • 我尝试连接它们,但结果仍然相同: FROM whbal INNER JOIN customer ON whbal.customer=customer.customer WHERE warehouse='SKW' AND whbal.customer BETWEEN @cust1 AND @cust2 ) 作为 SENOKO

标签: c# sql winforms


【解决方案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

【讨论】:

  • 我尝试连接它们,但结果仍然相同: FROM whbal INNER JOIN customer ON whbal.customer=customer.customer WHERE warehouse='SKW' AND whbal.customer BETWEEN @cust1 AND @cust2 ) 作为 SENOKO
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2011-02-10
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多