22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @FindBin BINARY(28) -- 7个连续的零(4*7)
SET @FindBin = 0
;WITH BinTable AS(
SELECT
*,
CONVERT(BINARY(4),[1day])+
CONVERT(BINARY(4),[2day])+
CONVERT(BINARY(4),[3day])+
...
CONVERT(BINARY(4),[20day]) AS BinData
FROM dbo.TestChk
)
SELECT
*
FROM
BinTable
WHERE
CHARINDEX(@FindBin,BinData)>0
SELECT *
FROM (-- 把每一天的零/非零转换成标志字符0/1
SELECT *,
(CASE WHEN [1day]=0 THEN '0' ELSE '1' END)+
(CASE WHEN [2day]=0 THEN '0' ELSE '1' END)+
...
(CASE WHEN [20day]=0 THEN '0' ELSE '1' END) mask
FROM table1
) t
WHERE CHARINDEX('0000000',mask) <> 0 -- 判断标志中是否存在连续7个0
select * from table1 where id not in (
select id from (
select id,1day, 2day, 3day,4day,5day,6day,7day from table1
union all
select id, 2day, 3day,4day,5day,6day,7day,8day from table1
union all
select id, 3day,4day,5day,6day,7day,8day, 9day from table1
union all
……
union all
select id,14day, 15day, 16day,17day,18day,19day,20day from table1
) aa where 1day=0 and 2day=0 and 3day=0 and 4day=0 and 5day=0 and 6day=0 and 7day=0
)