SQL查询根据日期范围按大小和类型计算2个单独的数据列

时间:2014-03-13 17:13:07

标签: sql sql-server

我有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品脱牛奶

谢谢!

1 个答案:

答案 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)。