我的表包含
( D1 datetime,d2 datetime,....,d31 datetime,H1 int,h2 int,.. h31 int )
D1-月1日,H1-小时
在这里,我想获取小时数为<= 0的日期,并且日期不应该是星期日或星期六,这应该是过去3个月的时间。
我试图获取过去3个月的所有星期日和星期六列表,并检查该列表,但这无济于事。
请先帮助我,
答案 0 :(得分:0)
这是您要寻找的吗?
select v.*
from t cross apply
(values (d1, h1), (d2, h2), . . .
) v(d, h)
where v.d >= dateadd(month, -3, getdate()) and -- last three months
datename(weekday, v.d) not in ('Saturday', 'Sunday') and
v.h < 0;
cross apply
被用于取消数据透视。这表明您的数据结构确实很糟糕。列中的数据应位于单独的行中。