我有2个单独的sql查询(如下所示),但是我需要将一个表中的数据显示为begInv,acqQty,isize,type。 对于给定的大小和类型,如何在同一个表中显示2列和单独的日期范围?
SELECT
Sum(i.Qty) as begInv
,i.Size
,i.Type
FROM InvDetails i
join Acquisition a
on i.SerialNo = a.SerialNo
where a.DtAcquired < '1/25/2014'
group by i.Size, i.Type
SELECT
Sum(i.Qty) as acqqty
,i.Size
,i.Type
FROM InvDetails i
join Acquisition a
on i.SerialNo = a.SerialNo
where a.DtAcquired between '1/25/2014' and '3/15/2014'
group by i.Size, i.Type
合并后的数据如下: begInv acqqty尺寸类型 0 5品脱冰淇淋 0 6 16盎司苏打水 1加仑汽水 3 46 5盎司。苏打 0 15 50 ML苏打水 0 11 5 ML苏打水 0 9 7盎司奶油 1 12品脱奶油 1 4 75 ML牛奶 1 6品脱牛奶
谢谢!
答案 0 :(得分:1)
您想使用条件聚合:
SELECT Sum(case when a.DtAcquired < '2014-01-25'
then i.Qty
else 0
end) as begqty,
Sum(case when a.DtAcquired between '2014-01-25' and '2014-03-15'
then i.Qty
else 0
end) as acqqty,
i.Size, i.Type
FROM InvDetails i join
Acquisition a
on i.SerialNo = a.SerialNo
group by i.Size, i.Type;
请注意,我将日期格式更改为使用ANSI标准格式;这比你使用的形式更安全一些(这可能是模糊的,无论是mmddyyyy还是ddmmyyyy)。