我有一个只有几列的表格:
BUS_DATE VALUE EXP_DATE
6/29/2015 60 6/29/2015
6/30/2015 100 6/30/2015
6/30/2015 50 6/30/2015
6/30/2015 25 7/1/2015
7/1/2015 75 7/1/2015
我只是在寻找如何循环遍历表中的每个[BUS_DATE]并使用[EXP_DATE]逻辑将[VALUE]与其进行对比
FOR EACH @BUS_DATE
INSERT BUS_DATE, SUM(VALUE)
INTO #tmp
FROM TABLE
WHERE (
BUS_DATE = @BUS_DATE
OR
(@BUS_DATE > BUS_DATE AND @BUS_DATE <= EXP_DATE)
)
NEXT
最终,我希望输出看起来像这样:
BUS_DATE VALUE
6/29/2015 60
6/30/2015 175
7/1/2015 100
提前非常感谢你!
答案 0 :(得分:2)
这是一个简单的GROUP BY
查询:
SELECT BUS_DATE, SUM(VALUE) AS VALUE
FROM MyTable
GROUP BY BUS_DATE
如果您想将结果存储在#tmp
表中,请使用insert from select语法。
答案 1 :(得分:1)
如果我理解你的问题:
您计算了BUS_DATE
(SELECT DISTINCT BUS_DATE FROM TABLE
)的列表。
每个现有的BUS_DATE
都会出现一次。
您根据EXP_DATE
逻辑将原始表格加入该列表。
SELECT lst.BUS_DATE
, val = SUM(VALUE)
INTO #tmp
FROM ( SELECT DISTINCT BUS_DATE FROM TABLE ) lst
JOIN TABLE dat
ON ( lst.BUS_DATE = dat.BUS_DATE )
OR
( lst.BUS_DATE > dat.BUS_DATE AND lst.BUS_DATE <= dat.EXP_DATE )
GROUP BY lst.BUS_DATE
答案 2 :(得分:0)
更新: 现在,这只是EXP_DATE&gt;时的值的总和。 BUS_DATE
$
答案 3 :(得分:0)
SELECT BUS_DATE, SUM(VALUE) FROM tblName Group By BUS_DATE
在你的情况下......
SELECT BUS_DATE, SUM(VALUE) INTO #tmp FROM TABLE (where exp_date logic here)