我正试图在SQL Server 2008中获得最新的星期五.
我有这个.它获得了本周的开始(星期一),然后减去3天到星期五.
declare @recentFriday datetime = DATEADD(ww, DATEDIFF(dd,0,GETDATE()), 0)-3
Run Code Online (Sandbox Code Playgroud)
如果在一周内运行,它将在上周五的日期正确.但是当在周五(或周六)运行时,它仍然会在上周的日期而不是当前周的周五.我即将使用if/else条件,但我确信这是一种更简单的方法.
我有一张桌子(time_period)
该表列出了几个时间段.
unique_id type_id sequence_number billing_id ...
13 LJK1 1 4356
14 CNS3 2 4356
15 LJK1 3 4356
16 AOX4 4 4356
17 CNS3 1 9827
18 POD2 2 9827
Run Code Online (Sandbox Code Playgroud)
这很棘手.我需要根据递增的序列号将所有type_id对从一个句点返回到下一个句点.例如,对于billing_id ='4356',我需要检索此结果集
-----------------------------------
LJK1 | CNS3 -- type_ids pair from seq 1 to seq 2
CNS3 | LJK1 -- type_ids pair from seq 2 to seq 3
LJK1 | AOX4 -- type_ids pair from seq 3 to seq 4
Run Code Online (Sandbox Code Playgroud)
每个顺序的sequence_numbers的计数是可变的(高达10,低至2).我将为X个订单执行此操作.由此,我将进行进一步的处理,但获得这些配对本身令我感到困惑.我不需要结果集中的order_id或序列号.
这里需要递归CTE吗?游标也许?或者也许使用枢轴?我刚刚进行了头脑风暴和研究,但我对其中任何一个都没有太多经验,可以使用一些方向.
使用SQL Server 2008
如何为报表编写SQL查询(通常每周运行一次,每月运行一次或一些不频繁的数量),与为一天运行多次的Web应用程序(或应用程序)编写查询有何不同?如果查询每月只运行一次,速度和性能不是一个大问题,对吗?在更频繁地使用SQL方面(临时表,CTE等)方面呢?
我是一个SQL人员,但我需要一个函数来计算VB.NET中两个日期之间的工作日数.我不需要担心假期.不幸的是,我的尝试是徒劳的.非常感激
这将包含在Reporting Service 2008 R2中的自定义代码中.