56,687
社区成员
发帖
与我相关
我的任务
分享
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[num] int,[status] NVARCHAR(100))
Insert #T
select 1,1,null union all
select 2,1,null union all
select 3,0,null union all
select 4,1,null union all
select 5,0,null union all
select 6,0,null
Go
--测试数据结束
SELECT a.id ,
a.num ,
CASE WHEN a.num = 0
AND ( b.num = 0
OR c.num = 0
) THEN '检修'
ELSE '正常'
END AS status
FROM #T a
LEFT JOIN #T b ON a.id = b.id + 1
LEFT JOIN #T c ON a.id = c.id - 1
SELECT a.id,
a.datelist,
a.num,
CASE WHEN a.num = 0 && b.num = 0 THEN '检修' ELSE '正常' END AS status
FROM
(SELECT
id,datelist,
COUNT(*)-1 AS num
FROM
(
SELECT id,CONCAT('2017-08-01 12:',val) AS datelist FROM xj_num
UNION ALL
SELECT @i:=@i+1 AS id,FROM_UNIXTIME(collect_time,'%Y-%m-%d %H:%i:%s') AS realtime
FROM xj_collection_detail,(SELECT @i:=0) AS tb
WHERE project_id='310115ED0001' AND sensor_id=6 AND del=0 AND FROM_UNIXTIME(collect_time,'%Y-%m-%d %H')='2017-08-01 12'
) AS tb1
GROUP BY datelist) AS a
left JOIN
(SELECT
id,datelist,
COUNT(*)-1 AS num
FROM
(
SELECT id,CONCAT('2017-08-01 12:',val) AS datelist FROM xj_num
UNION ALL
SELECT @i:=@i+1 AS id,FROM_UNIXTIME(collect_time,'%Y-%m-%d %H:%i:%s') AS realtime
FROM xj_collection_detail,(SELECT @i:=0) AS tb
WHERE project_id='310115ED0001' AND sensor_id=6 AND del=0 AND FROM_UNIXTIME(collect_time,'%Y-%m-%d %H')='2017-08-01 12'
) AS tb1
GROUP BY datelist) AS b
ON (a.id=b.id+1 && a.datelist=ADDDATE(b.datelist,INTERVAL 5 MINUTE) && a.id>b.id)
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[num] int,[status] NVARCHAR(100))
Insert #T
select 1,1,null union all
select 2,1,null union all
select 3,0,null union all
select 4,1,null union all
select 5,0,null union all
select 6,0,null
Go
--测试数据结束
SELECT a.id ,
a.num ,
CASE WHEN a.num = 0
AND b.num = 0 THEN '检修'
ELSE '正常'
END AS status
FROM #T a
LEFT JOIN #T b ON a.id = b.id + 1