我有3张桌子:
我正在尝试创建一个查询,该查询将返回ProductMaster中的所有行,然后是今年的销售额,然后是去年的销售额。问题是今年的一些产品是新的,去年的一些产品不再可用,但我必须列出所有的产品,所以它必须是这样的:
Product TY LY
aaaa 1000 0
bbbb 0 1000
我的查询:
select
i.Product
,b1.TrnMonth
,b1.TrnYear
,b1.TY
,b2.LY
from Productmaster i
left join #ty b1
on i.Product = b1.Product
left join #ly b2
on i.Product = b2.Product
Group by i.Product
,b1.TrnMonth
,b1.TrnYear
答案 0 :(得分:0)
我认为你需要LEFT OUTER JOIN
。
答案 1 :(得分:0)
我们不清楚您的GROUP BY
和TY.TrnYear
和TrnMonth
列应该如何与您的结果中的LY表相关联。
排除它们并继续输出您的输出示例(也会排除它们),我会使用此查询:
SELECT
i.Product
, COALESCE((Select SUM(TY) From #ty b1 Where i.Product = b1.Product), 0) As TY
, COALESCE((Select SUM(LY) From #ly b2 Where i.Product = b2.Product), 0) As LY
FROM Productmaster i
你不应该在没有特殊条件的情况下将TY和LY相互连接,因为它们会交叉乘以结果行。