SQL Query必须从ProductMaster和其他2个表返回行

时间:2012-07-14 11:01:23

标签: sql

我有3张桌子:

  1. ProductMaster
  2. SalesTY(今年销售)
  3. SalesLY(去年销售)
  4. 我正在尝试创建一个查询,该查询将返回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
    

2 个答案:

答案 0 :(得分:0)

我认为你需要LEFT OUTER JOIN

答案 1 :(得分:0)

我们不清楚您的GROUP BYTY.TrnYearTrnMonth列应该如何与您的结果中的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相互连接,因为它们会交叉乘以结果行。