好的所有SQL主人和Jedi,这是我的问题,并在SQL SSMS中请求一个case语句。
我有一年的约会。
所以每行的日期从2013年3月24日开始,直到今天。
我希望每14天就被称为04/12/2013。
So from 03/24/2013 thru 04/06/2013 would be all 04/12/2013 and
from 04/07/2013 thru 04/20/2013 would be 04/26/2013 and
from 04/21/2013 thru 05/04/2013 would be 05/10/2013 and so on.
下面是一个给你一个想法的集合:
希望这是有道理的。
答案 0 :(得分:0)
有几种方法可以做到这一点 - 我可能想要创建一个包含所有适当支付日期的表,然后使用相对简单的逻辑加入到该表中。
类似的东西:
select PayDate.date
from date
inner join PayDate on datediff(day, date.date, PayDate.date) > 18 AND datediff(day, date.date, PayDate.date) < 4
或者其他什么。我还没有找到确切的datediff
,因为我处在某事的中间,但这应该足以开始了。
答案 1 :(得分:0)
从Awesome StackOverflow中获取提示并接受Jeff的建议,我继续创建一个Temp Table并让查询起作用。我现在使用下面的Temp表代码获取我需要的信息,并在Dates上进行内部联接,并在Select和Group By语句中包含PP日期。
希望这可以帮助其他人拥有数据库的只读权限。
declare @temp table
(
Date datetime,
PPDate datetime
)
INSERT INTO @temp (Date, PPDate)
SELECT '2013-2-10', '2013-3-1'
UNION ALL SELECT '2013-2-11', '2013-3-1'
UNION ALL SELECT '2013-2-12', '2013-3-1'
....
....
UNION ALL SELECT '2013-2-23', '2013-3-1'
UNION ALL SELECT '2013-2-24', '2013-3-15'
....
....
UNION ALL SELECT '2013-3-8', '2013-3-15'
UNION ALL SELECT '2013-3-9', '2013-3-15'
UNION ALL SELECT '2013-3-10', '2013-3-29'
UNION ALL SELECT '2013-3-11', '2013-3-29'
....
....
UNION ALL SELECT '2013-3-22', '2013-3-29'
UNION ALL SELECT '2013-3-23', '2013-3-29'
UNION ALL SELECT '2013-3-24', '2013-4-12'
select a.StrDate, t.PPDate, sum(Qty) Qty from tbl1 a
Inner Join @temp t on t.date = a.StrDate
group by a.StrDate, t.PPDate