我需要做一份我已经完成的销售报告,但是老板想要在最繁忙的一周中找到一个标记!
我的桌子是
分隔间
TillID BranchID TillNo OperatorID
1 1 1 1
2 1 2 2
3 1 3 3
4 2 1 4
5 3 1 5
销售:
TillID SaleTS Net
1 01/01/2016 09:00 9
1 01/01/2016 10:00 76
2 01/01/2016 09:00 35
2 01/01/2016 10:00 84
3 01/01/2016 09:00 68
3 01/01/2016 10:00 43
4 01/01/2016 09:00 12
4 01/01/2016 10:00 0
5 01/01/2016 09:00 79
5 01/01/2016 10:00 25
1 02/01/2016 09:00 90
1 02/01/2016 10:00 16
2 02/01/2016 09:00 58
2 02/01/2016 10:00 96
3 02/01/2016 09:00 36
3 02/01/2016 10:00 25
4 02/01/2016 09:00 85
4 02/01/2016 10:00 74
5 02/01/2016 09:00 14
5 02/01/2016 10:00 12
1 03/01/2016 09:00 45
1 03/01/2016 10:00 78
2 03/01/2016 09:00 98
2 03/01/2016 10:00 65
3 03/01/2016 09:00 32
3 03/01/2016 10:00 19
4 03/01/2016 09:00 37
4 03/01/2016 10:00 79
5 03/01/2016 09:00 46
5 03/01/2016 10:00 13
结果:
TillID SaleDate Day DailyNet BestDay
1 01/01/2016 Friday 85 No
1 02/01/2016 Saturday 106 No
1 03/01/2016 Sunday 123 Yes
2 01/01/2016 Friday 119 No
2 02/01/2016 Saturday 154 No
2 03/01/2016 Sunday 163 Yes
3 01/01/2016 Friday 111 Yes
3 02/01/2016 Saturday 61 No
3 03/01/2016 Sunday 51 No
4 01/01/2016 Friday 12 No
4 02/01/2016 Saturday 159 Yes
4 03/01/2016 Sunday 116 No
5 01/01/2016 Friday 104 Yes
5 02/01/2016 Saturday 26 No
5 03/01/2016 Sunday 59 No
我的查询除了总数之外都做了一切,我可以通过构建一个每天最大的派生表来做到这一点,但随着时间的推移链接这些表会变慢。
我一直在寻找并找不到另一种方法来获得这个标记。
提前谢谢。
此致
吉姆
答案 0 :(得分:1)
如果你想要总计使用ROLLUP子句:
https://technet.microsoft.com/en-us/library/ms189305%28v=sql.90%29.aspx
BestDay可以这样制作:
case when DailyNet = max(DailyNet) over(partition by TillID) then 'Yes' else 'No'
答案 1 :(得分:0)
根据收银台,我猜你是一家零售公司,所以你的周数不会与日历周数相对应,因为一般情况下你想要从周日到周六或周一到周日的周数。 理想情况下,您可以使用系统日历来识别周和月。 但作为一个简单的技巧,您可以根据适当的偏移量简单地分配周。 例如,今年第一个星期日是1/3。所以,它需要在1/1或2天后行动。
@WEEK = DATEPART(WEEK,DATEADD(DAY,-2,@CurrentDate))
这只适用于今年。理想情况下,您需要创建一个日期表,其中包含所有年份的适当计算周数(如果我有时间,我会这样做)