如何显示两个表中的所有记录还有不匹配的记录?

时间:2017-02-23 09:56:08

标签: sql sql-server stored-procedures aggregate

我想显示两个表中的所有值([JC_ItemDSP10days],[JC_ItemDSP30Days])

  

当我运行以下查询时,它会返回 14210行

select 
    itemid,sum(qtysold) [NineDaysSold]
from 
    [HQMatajer].[dbo].[JC_ItemDSP10days]
group by ItemID
  

当我运行此查询时,它返回 16455行

select 
    itemid,sum(qtysold) [ThirtyDaysSold]
from 
    [HQMatajer].[dbo].[JC_ItemDSP30Days]
group by ItemID

现在我要显示两个表中的所有记录,当 JC_ItemDSP10days.ItemID = JC_ItemDSP30Days.ItemID 时,以及如果记录不在任何一个表中,它也必须显示结果

这是我试过的

select 
    ItemID =isnull(nineDays.itemid,thirtyDays.ItemID),
    CONVERT(DECIMAL(10,2),sum(nineDays.qtysold))  [NineDaysSold],
    CONVERT(DECIMAL(10,2),sum(thirtyDays.qtysold)) [ThirtyDaysSold]
from 
    [JC_ItemDSP10days] nineDays
FULL outer JOIN [HQMatajer].[dbo].[JC_ItemDSP30Days] thirtyDays on nineDays.ItemID=thirtyDays.ItemID
group by nineDays.ItemID,thirtyDays.ItemID
order by ItemID
  

但结果是错误的

Result

这是 ItemID = 9 的实际值 从前两个查询结果

Result2

0 个答案:

没有答案