愿所有的美好和期待都能如约而至

具有多列的 SQL Pivot

发布时间:  来源:互联网  作者:匿名  标签:error SQL Pivot with multiple columns exception IT资讯 pivot sql sql-server sql-se  热度:37.5℃

本文介绍了具有多列的 SQL Pivot的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

需要有关 sql server 2008 中的 pivot 子句的帮助.我有一张包含此信息的表格:

Need help with the pivot clause in sql server 2008.
I have a table with this info:

Weekno DayOfWeek FromTime ToTime1 2 10:00 14:001 3 10:00 14:002 3 08:00 13:002 4 09:00 13:002 5 14:00 22:003 1 06:00 13:003 4 06:00 13:003 5 14:00 22:00


Weekno DayOfWeek FromTime ToTime
1 2 10:00 14:00
1 3 10:00 14:00
2 3 08:00 13:00
2 4 09:00 13:00
2 5 14:00 22:00
3 1 06:00 13:00
3 4 06:00 13:00
3 5 14:00 22:00

我想把它转换成一个看起来像这样的表格:周开始1结束1开始2结束2开始3结束3开始4结束4开始5结束5开始6结束6开始7结束71 10:00 14:00 10:00 14:002 08:00 13:00 09:00 13:00 14:00 22:003 06:00 13:00 06:00 13:00 14:00 22:00

I want to convert this into a table that looks like this:


Week Start1 End1 Start2 End2 Start3 End3 Start4 End4 Start5 End5 Start6 End6 Start7 End7
1 10:00 14:00 10:00 14:00
2 08:00 13:00 09:00 13:00 14:00 22:00
3 06:00 13:00 06:00 13:00 14:00 22:00

有什么办法可以处理数据透视查询吗?请用一个例子来回答如何做.

Is there any way to do with a pivot query?
Please write respond with an example on how to do it.

我很感激在这方面的任何帮助.提前致谢.

I appreciate any kind of help on this. Thanks in advance.

推荐答案

这是枢轴版本:

https://data.stackexchange.com/stackoverflow/query/7295/so3241450

-- SO3241450

CREATE TABLE #SO3241450 (
    Weekno int NOT NULL
    ,DayOfWeek int NOT NULL
    ,FromTime time NOT NULL
    ,ToTime time NOT NULL
)

INSERT INTO #SO3241450 VALUES
(1, 2, '10:00', '14:00')
,(1, 3, '10:00', '14:00')
,(2, 3, '08:00', '13:00')
,(2, 4, '09:00', '13:00')
,(2, 5, '14:00', '22:00')
,(3, 1, '06:00', '13:00')
,(3, 4, '06:00', '13:00')
,(3, 5, '14:00', '22:00')

;WITH Base AS (
    SELECT Weekno, DayOfWeek, FromTime AS [Start], ToTime AS [End]
    FROM #SO3241450
)
,norm AS (
SELECT Weekno, ColName + CONVERT(varchar, DayOfWeek) AS ColName, ColValue
FROM Base
UNPIVOT (ColValue FOR ColName IN ([Start], [End])) AS pvt
)
SELECT *
FROM norm
PIVOT (MIN(ColValue) FOR ColName IN ([Start1], [End1], [Start2], [End2], [Start3], [End3], [Start4], [End4], [Start5], [End5], [Start6], [End6], [Start7], [End7])) AS pvt​

这篇关于具有多列的 SQL Pivot的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,

勇敢去编程!

勇敢的热爱编程,未来的你一定会大放异彩,未来的生活一定会因编程更好!

TOP