每日仅针对日历日排序的SQL数据。2013年2月1日是星期五,需要提取2月1日的数据。 2.现在,它将整个1-27-2013周的数据拉到2-2-2013。我的结果列在周结束日期的总计费中。 EX(1-5-13,1-12-13)对于1月底和2月初,我需要结果看起来像1-27-13到1-31-13 ="总计&#34 ;截止日期为第31天。 2月2日至13日至2月2日至13日="总计"
我已经能够在个人日子里做到这一点,但那不是"会计"想要它。
提前致谢。 这是我的代码:
SELECT
DATEADD(week, DATEdiff(WK, 0, bd.[Service Date 1]) ,5) AS month,
bd.Chart,
bd.[Transaction Code],
SUM(bd.Units) AS [Total Billed]
FROM dbo.[Billing Detail] AS bd
INNER JOIN dbo.Patient AS p ON bd.Chart = p.[Chart Number]
WHERE
(bd.[Transaction Code] = 'H2016')
AND (bd.[Service Date 1] >= '01/01/2013')
AND (bd.[Service Date 1] < '12/31/2013')
GROUP BY
DATEADD(week, DATEdiff(WK, 0, bd.[Service Date 1]) ,5),
bd.Chart,
bd.[Transaction Code]
ORDER BY bd.Chart
答案 0 :(得分:3)
只需添加到您的选择列表(并按列表分组)两个字段:
...
MONTH([Service Date 1]),
DATEPART(week,[Service Date 1])
...
那应该这样做
答案 1 :(得分:1)
我会编写一个存储过程,它将日期变量作为输入参数。它会这样开始:
declare @dateIn as date;
declare @EndOfWeek as date;
declare @StartOfWeek as date;
declare @WeekEndsOn as int;
set @WeekEndsOn = 6; -- Friday
if datepart(dw, @dateIn) <= @WeekEndsOn
set @EndOfWeek = dateadd(day, @WeekEndsOn - datepart(dw, @dateIn), @dateIn);
else
set @EndOfWeek = dateadd(day, (7 + @WeekEndsOn) - datepart(dw, @dateIn), @dateIn)
然后使用@StartOfWeek和@EndOfWeek变量运行查询。你可以使用convert()和concatonation的组合来获得这样的字符串,“2-1-13到2-2-13”。
事实上,您可能希望将@WeekEndsOn作为输入参数,以防它发生变化。