27,579
社区成员
发帖
与我相关
我的任务
分享
[code=sql]
;WITH tt
AS(
SELECT classes,time_from,time_to,
MAX(CASE WHEN kioskid='一号票厅' THEN NAME ELSE '' END ) AS '一号票厅',
MAX(CASE WHEN kioskid='二号票厅' THEN NAME ELSE '' END ) AS '二号票厅',
MAX(CASE WHEN kioskid='三号票厅' THEN NAME ELSE '' END ) AS '三号票厅',
MAX(CASE WHEN kioskid='四号票厅' THEN NAME ELSE '' END ) AS '四号票厅',
MAX(CASE WHEN kioskid='五号票厅' THEN NAME ELSE '' END ) AS '五号票厅',
MAX(CASE WHEN kioskid='六号票厅' THEN NAME ELSE '' END ) AS '六号票厅'
FROM dbo.TB
GROUP BY classes,time_from,time_to)
SELECT DATEADD(dd, m.number, tt.time_from) AS 日期 ,
tt.classes ,
MAX(tt.一号票厅) AS 一号票厅, --这块做一下调整即可
MAX(tt.二号票厅) AS 二号票厅,
MAX(tt.三号票厅) AS 三号票厅,
MAX(tt.四号票厅) AS 四号票厅,
MAX(tt.五号票厅) AS 五号票厅,
MAX(tt.六号票厅) AS 六号票厅
FROM tt
LEFT JOIN master..spt_values M ON DATEADD(dd, m.number, tt.time_from) BETWEEN tt.time_from
AND
tt.time_to
AND M.TYPE = 'P'
GROUP BY DATEADD(dd, m.number, tt.time_from) ,
tt.classes
ORDER BY DATEADD(dd, m.number, tt.time_from) ,
tt.classes ASC
/*
日期 classes 一号票厅 二号票厅 三号票厅 四号票厅 五号票厅 六号票厅
2013-04-03 00:00:00.000 下午 贞
2013-04-04 00:00:00.000 下午 贞
2013-04-05 00:00:00.000 上午 柳
2013-04-05 00:00:00.000 下午 贞 军
2013-04-06 00:00:00.000 上午 柳
2013-04-06 00:00:00.000 下午 贞 军
2013-04-07 00:00:00.000 上午 柳
2013-04-07 00:00:00.000 下午 贞 军
2013-04-08 00:00:00.000 上午 柳
2013-04-08 00:00:00.000 下午 贞 军
2013-04-09 00:00:00.000 上午 柳
2013-04-09 00:00:00.000 下午 贞 军
2013-04-10 00:00:00.000 上午 柳
2013-04-10 00:00:00.000 下午 贞 军
2013-04-11 00:00:00.000 上午 柳
2013-04-11 00:00:00.000 下午 贞 军
2013-04-12 00:00:00.000 上午 柳 霞
2013-04-12 00:00:00.000 下午 贞 军
2013-04-13 00:00:00.000 上午 柳 霞
2013-04-13 00:00:00.000 下午 贞 军
2013-04-14 00:00:00.000 上午 柳 霞
2013-04-14 00:00:00.000 下午 军
2013-04-15 00:00:00.000 上午 柳 霞
2013-04-15 00:00:00.000 下午 军
2013-04-16 00:00:00.000 上午 霞
2013-04-17 00:00:00.000 上午 霞
2013-04-18 00:00:00.000 上午 霞
2013-04-19 00:00:00.000 上午 霞
2013-04-20 00:00:00.000 上午 霞*/
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (name nvarchar(2),sell_ID int,kioskID nvarchar(8),classes nvarchar(4),time_from datetime,time_to datetime)
insert into [TB]
select '柳',1001,'一号票厅','上午','2013/4/5','2013/4/15' union all
select '军',1002,'二号票厅','下午','2013/4/5','2013/4/15' union all
select '贞',1003,'一号票厅','下午','2013/4/3','2013/4/13' union all
select '霞',1004,'六号票厅','上午','2013/4/12','2013/4/20'
select * from [TB]
;WITH tt
AS(
SELECT classes,time_from,time_to,
MAX(CASE WHEN kioskid='一号票厅' THEN NAME ELSE '' END ) AS '一号票厅',
MAX(CASE WHEN kioskid='二号票厅' THEN NAME ELSE '' END ) AS '二号票厅',
MAX(CASE WHEN kioskid='三号票厅' THEN NAME ELSE '' END ) AS '三号票厅',
MAX(CASE WHEN kioskid='四号票厅' THEN NAME ELSE '' END ) AS '四号票厅',
MAX(CASE WHEN kioskid='五号票厅' THEN NAME ELSE '' END ) AS '五号票厅',
MAX(CASE WHEN kioskid='六号票厅' THEN NAME ELSE '' END ) AS '六号票厅'
FROM dbo.TB
GROUP BY classes,time_from,time_to)
SELECT DATEADD(dd, m.number, tt.time_from) AS 日期 ,
tt.classes ,
tt.一号票厅 ,
tt.二号票厅 ,
tt.三号票厅 ,
tt.四号票厅 ,
tt.五号票厅 ,
tt.六号票厅
FROM tt
LEFT JOIN master..spt_values M ON DATEADD(dd, m.number, tt.time_from) BETWEEN tt.time_from
AND
tt.time_to
AND M.TYPE = 'P'
ORDER BY DATEADD(dd, m.number, tt.time_from) ,
tt.classes ASC
/*
日期 classes 一号票厅 二号票厅 三号票厅 四号票厅 五号票厅 六号票厅
2013-04-03 00:00:00.000 下午 贞
2013-04-04 00:00:00.000 下午 贞
2013-04-05 00:00:00.000 上午 柳
2013-04-05 00:00:00.000 下午 贞
2013-04-05 00:00:00.000 下午 军
2013-04-06 00:00:00.000 上午 柳
2013-04-06 00:00:00.000 下午 军
2013-04-06 00:00:00.000 下午 贞
2013-04-07 00:00:00.000 上午 柳
2013-04-07 00:00:00.000 下午 贞
2013-04-07 00:00:00.000 下午 军
2013-04-08 00:00:00.000 上午 柳
2013-04-08 00:00:00.000 下午 军
2013-04-08 00:00:00.000 下午 贞
2013-04-09 00:00:00.000 上午 柳
2013-04-09 00:00:00.000 下午 贞
2013-04-09 00:00:00.000 下午 军
2013-04-10 00:00:00.000 上午 柳
2013-04-10 00:00:00.000 下午 军
2013-04-10 00:00:00.000 下午 贞
2013-04-11 00:00:00.000 上午 柳
2013-04-11 00:00:00.000 下午 贞
2013-04-11 00:00:00.000 下午 军
2013-04-12 00:00:00.000 上午 柳
2013-04-12 00:00:00.000 上午 霞
2013-04-12 00:00:00.000 下午 军
2013-04-12 00:00:00.000 下午 贞
2013-04-13 00:00:00.000 上午 霞
2013-04-13 00:00:00.000 上午 柳
2013-04-13 00:00:00.000 下午 贞
2013-04-13 00:00:00.000 下午 军
2013-04-14 00:00:00.000 上午 柳
2013-04-14 00:00:00.000 上午 霞
2013-04-14 00:00:00.000 下午 军
2013-04-15 00:00:00.000 上午 霞
2013-04-15 00:00:00.000 上午 柳
2013-04-15 00:00:00.000 下午 军
2013-04-16 00:00:00.000 上午 霞
2013-04-17 00:00:00.000 上午 霞
2013-04-18 00:00:00.000 上午 霞
2013-04-19 00:00:00.000 上午 霞
2013-04-20 00:00:00.000 上午 霞*/
[code=sql]
;WITH tt
AS(
SELECT classes,time_from,time_to,
MAX(CASE WHEN kioskid='一号票厅' THEN NAME ELSE '' END ) AS '一号票厅',
MAX(CASE WHEN kioskid='二号票厅' THEN NAME ELSE '' END ) AS '二号票厅',
MAX(CASE WHEN kioskid='三号票厅' THEN NAME ELSE '' END ) AS '三号票厅',
MAX(CASE WHEN kioskid='四号票厅' THEN NAME ELSE '' END ) AS '四号票厅',
MAX(CASE WHEN kioskid='五号票厅' THEN NAME ELSE '' END ) AS '五号票厅',
MAX(CASE WHEN kioskid='六号票厅' THEN NAME ELSE '' END ) AS '六号票厅'
FROM dbo.TB
GROUP BY classes,time_from,time_to)
SELECT DATEADD(dd, m.number, tt.time_from) AS 日期 ,
tt.classes ,
MAX(tt.一号票厅) AS 一号票厅, --这块做一下调整即可
MAX(tt.二号票厅) AS 二号票厅,
MAX(tt.三号票厅) AS 三号票厅,
MAX(tt.四号票厅) AS 四号票厅,
MAX(tt.五号票厅) AS 五号票厅,
MAX(tt.六号票厅) AS 六号票厅
FROM tt
LEFT JOIN master..spt_values M ON DATEADD(dd, m.number, tt.time_from) BETWEEN tt.time_from
AND
tt.time_to
AND M.TYPE = 'P'
GROUP BY DATEADD(dd, m.number, tt.time_from) ,
tt.classes
ORDER BY DATEADD(dd, m.number, tt.time_from) ,
tt.classes ASC
/*
日期 classes 一号票厅 二号票厅 三号票厅 四号票厅 五号票厅 六号票厅
2013-04-03 00:00:00.000 下午 贞
2013-04-04 00:00:00.000 下午 贞
2013-04-05 00:00:00.000 上午 柳
2013-04-05 00:00:00.000 下午 贞 军
2013-04-06 00:00:00.000 上午 柳
2013-04-06 00:00:00.000 下午 贞 军
2013-04-07 00:00:00.000 上午 柳
2013-04-07 00:00:00.000 下午 贞 军
2013-04-08 00:00:00.000 上午 柳
2013-04-08 00:00:00.000 下午 贞 军
2013-04-09 00:00:00.000 上午 柳
2013-04-09 00:00:00.000 下午 贞 军
2013-04-10 00:00:00.000 上午 柳
2013-04-10 00:00:00.000 下午 贞 军
2013-04-11 00:00:00.000 上午 柳
2013-04-11 00:00:00.000 下午 贞 军
2013-04-12 00:00:00.000 上午 柳 霞
2013-04-12 00:00:00.000 下午 贞 军
2013-04-13 00:00:00.000 上午 柳 霞
2013-04-13 00:00:00.000 下午 贞 军
2013-04-14 00:00:00.000 上午 柳 霞
2013-04-14 00:00:00.000 下午 军
2013-04-15 00:00:00.000 上午 柳 霞
2013-04-15 00:00:00.000 下午 军
2013-04-16 00:00:00.000 上午 霞
2013-04-17 00:00:00.000 上午 霞
2013-04-18 00:00:00.000 上午 霞
2013-04-19 00:00:00.000 上午 霞
2013-04-20 00:00:00.000 上午 霞*/
[/quote]
这个结果可以作为视图么,我想将这个结果作为视图然后方便后面用到