问题:
SELECT * FROM (SELECT dPlanDate, sum(CASE  WHEN iQuantity>0 THEN iQuantity else 0 END) SQuantity,
sum(CASE  WHEN iQuantity>0 THEN iMoney else 0 END) SMoney,
sum(CASE  WHEN iQuantity>0 THEN iQuantity*(iPrice-iCost) else 0 END) Profit,
sum(CASE  WHEN iQuantity>0 THEN iQuantity*(iPrice-iCost)/iMoney else 0 END) Rate 
FROM OrderDetail od GROUP BY od.dPlanDate) a full outer join
(SELECT pd.dPlanDate, sum(CASE  WHEN iQuantity>0 THEN iQuantity else 0 END) PQuantity,
sum(CASE  WHEN iQuantity>0 THEN iMoney else 0 END) PMoney 
FROM PurchaseDetail pd GROUP BY pd.dPlanDate) b ON a.dPlanDate=b.dPlanDate取得数据:dPlanDate Squantity Smoney Profit Rate dPlanDate Pquantity Pmoney
NULL     NULL     NULL NULL NULL 2012-6-1 5         657
2012-6-7 11         175 175 8 NULL      NULL         NULL
2012-6-8 0         0 0 0 NULL      NULL     NULL
NULL         NULL      NULL NULL NULL 2012-6-13 4         91
2012-6-14 9         228 112 0.93 2012-6-14 5         60想得到结果:dPlanDate Squantity Smoney Profit Rate Pquantity Pmoney
2012-6-1     NULL     NULL NULL NULL 5         657
2012-6-7 11         175 175 8       NULL         NULL
2012-6-8 0         0 0 0       NULL     NULL
2012-6-13       NULL      NULL NULL NULL 4         91
2012-6-14 9         228 112 0.93 5         60就是说合并dPlanDate,有没有比较简单的方法.这个是外连接得到的数据,是不是可以以别的方式连接?

解决方案 »

  1.   

    SELECT isnull(a.dPlanDate,b.dPlanDate) as dPlanDate, a.Squantity, a.Smoney, a.Profit Rate, b.Pquantity, b.Pmoney
    FROM (SELECT dPlanDate, sum(CASE WHEN iQuantity>0 THEN iQuantity else 0 END) SQuantity,
    sum(CASE WHEN iQuantity>0 THEN iMoney else 0 END) SMoney,
    sum(CASE WHEN iQuantity>0 THEN iQuantity*(iPrice-iCost) else 0 END) Profit,
    sum(CASE WHEN iQuantity>0 THEN iQuantity*(iPrice-iCost)/iMoney else 0 END) Rate  
    FROM OrderDetail od GROUP BY od.dPlanDate) a full outer join
    (SELECT pd.dPlanDate, sum(CASE WHEN iQuantity>0 THEN iQuantity else 0 END) PQuantity,
    sum(CASE WHEN iQuantity>0 THEN iMoney else 0 END) PMoney  
    FROM PurchaseDetail pd GROUP BY pd.dPlanDate) b ON a.dPlanDate=b.dPlanDate
      

  2.   

    谢谢,学艺不精,不知道isnull还有这个用法