22,209
社区成员
发帖
与我相关
我的任务
分享
(28 行受影响)
消息 102,级别 15,状态 1,第 38 行
“?”附近有语法错误。
消息 102,级别 15,状态 1,第 40 行
“?”附近有语法错误。
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([日期] Date,[时间] NVARCHAR(100),[巡检器] int,[巡检点] nvarchar(25))
Insert #T
select '2017-12-12','04:45:38',52822,N'61A01' union all
select '2017-12-12','04:46:44',52822,N'61A02' union all
select '2017-12-12','04:47:13',52822,N'61A03' union all
select '2017-12-12','04:48:10',52822,N'61A04' union all
select '2017-12-12','04:49:00',52822,N'61A05' union all
select '2017-12-12','04:49:55',52822,N'61A06' union all
select '2017-12-12','04:50:24',52822,N'61A07' union all
select '2017-12-12','04:50:50',52822,N'61A01' union all
select '2017-12-12','04:51:20',52822,N'61A02' union all
select '2017-12-12','04:52:17',52822,N'61A03' union all
select '2017-12-12','04:52:56',52822,N'61A04' union all
select '2017-12-12','04:53:23',52822,N'61A05' union all
select '2017-12-12','05:11:08',52822,N'61A06' union all
select '2017-12-12','05:11:35',52822,N'61A07' union all
select '2017-12-12','05:12:02',52822,N'61A01' union all
select '2017-12-12','05:12:36',52822,N'61A02' union all
select '2017-12-12','05:13:39',52822,N'61A03' union all
select '2017-12-12','05:14:07',52822,N'61A04' union all
select '2017-12-12','05:17:05',52822,N'61A05' union all
select '2017-12-12','05:18:00',52822,N'61A06' union all
select '2017-12-12','05:18:55',52822,N'61A07' union all
select '2017-12-12','05:19:25',52822,N'61A01' union all
select '2017-12-12','05:19:55',52822,N'61A02' union all
select '2017-12-12','05:20:25',52822,N'61A03' union all
select '2017-12-12','05:21:23',52822,N'61A04' union all
select '2017-12-12','05:22:02',52822,N'61A05' union all
select '2017-12-12','05:22:28',52822,N'61A06' union all
select '2017-12-12','14:17:07',52822,N'61A07'
Go
--测试数据结束
DECLARE @sql VARCHAR(MAX)
SET @sql = '
;WITH cte AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY 日期,巡检器,巡检点 ORDER BY 时间) rn FROM #T
)
select 日期,巡检器'
;WITH cte AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY 日期,巡检器,巡检点 ORDER BY 时间) rn FROM #T
)
SELECT @sql = @sql + ',max(case 巡检点 when ''' + 巡检点
+ ''' then 时间 else null end)[' + 巡检点 + ']'
FROM ( SELECT DISTINCT
巡检点
FROM cte
) a
SET @sql = @sql
+ ' from cte group by 日期,巡检器,rn'
EXEC(@sql)