早教吧作业答案频道 -->英语-->
数据库表内容转换周一周二周三周四周五英语英语英语表1周一111周二1111周三111周四112周五121表2怎么把表1转换成表2,我想用pivot来做,似乎有点问题
题目详情
数据库表内容转换
周一 周二 周三 周四 周五
英语 英语 英语
表1
周一 1 1 1
周二 1 1 1 1
周三 1 1 1
周四 1 1 2
周五 1 2 1
表2
怎么把表1 转换成表2,我想用pivot来做,似乎有点问题
周一 周二 周三 周四 周五
英语 英语 英语
表1
周一 1 1 1
周二 1 1 1 1
周三 1 1 1
周四 1 1 2
周五 1 2 1
表2
怎么把表1 转换成表2,我想用pivot来做,似乎有点问题
▼优质解答
答案和解析
CREATE TABLE #test(
[周一] VARCHAR(6),
[周二] VARCHAR(6),
[周三] VARCHAR(6),
[周四] VARCHAR(6),
[周五] VARCHAR(6)
)
GO
INSERT INTO #test
SELECT '语文', '语文', '数学', '英语', '物理' UNION ALL
SELECT '数学', '英语', '物理', '语文', '语文' UNION ALL
SELECT NULL, '物理', NULL, '物理', '数学' UNION ALL
SELECT '英语', '数学', '英语', '英语', '数学'
GO
With MyCTE AS
(
SELECT 1 AS NO, '周一' AS [日期], [周一] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 2 AS NO, '周二' AS [日期], [周二] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 3 AS NO, '周三' AS [日期], [周三] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 4 AS NO, '周四' AS [日期], [周四] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 5 AS NO, '周五' AS [日期], [周五] AS [课程], 1 AS [ClassCount] FROM #test
)
SELECT
[日期],
SUM( tmp.[语文] ) [语文],
SUM( tmp.[数学] ) [数学],
SUM( tmp.[英语] ) [英语],
SUM( tmp.[物理] ) [物理]
FROM
MyCTE
PIVOT(
SUM([ClassCount])
FOR [课程] IN ([语文], [数学], [英语], [物理] )
) tmp
GROUP BY
NO,[日期]
ORDER BY
NO
GO
日期 语文 数学 英语 物理
---- ----------- ----------- ----------- -----------
周一 1 1 1 NULL
周二 1 1 1 1
周三 NULL 1 1 1
周四 1 NULL 2 1
周五 1 2 NULL 1
警告: 聚合或其他 SET 操作消除了 Null 值.
[周一] VARCHAR(6),
[周二] VARCHAR(6),
[周三] VARCHAR(6),
[周四] VARCHAR(6),
[周五] VARCHAR(6)
)
GO
INSERT INTO #test
SELECT '语文', '语文', '数学', '英语', '物理' UNION ALL
SELECT '数学', '英语', '物理', '语文', '语文' UNION ALL
SELECT NULL, '物理', NULL, '物理', '数学' UNION ALL
SELECT '英语', '数学', '英语', '英语', '数学'
GO
With MyCTE AS
(
SELECT 1 AS NO, '周一' AS [日期], [周一] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 2 AS NO, '周二' AS [日期], [周二] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 3 AS NO, '周三' AS [日期], [周三] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 4 AS NO, '周四' AS [日期], [周四] AS [课程], 1 AS [ClassCount] FROM #test UNION ALL
SELECT 5 AS NO, '周五' AS [日期], [周五] AS [课程], 1 AS [ClassCount] FROM #test
)
SELECT
[日期],
SUM( tmp.[语文] ) [语文],
SUM( tmp.[数学] ) [数学],
SUM( tmp.[英语] ) [英语],
SUM( tmp.[物理] ) [物理]
FROM
MyCTE
PIVOT(
SUM([ClassCount])
FOR [课程] IN ([语文], [数学], [英语], [物理] )
) tmp
GROUP BY
NO,[日期]
ORDER BY
NO
GO
日期 语文 数学 英语 物理
---- ----------- ----------- ----------- -----------
周一 1 1 1 NULL
周二 1 1 1 1
周三 NULL 1 1 1
周四 1 NULL 2 1
周五 1 2 NULL 1
警告: 聚合或其他 SET 操作消除了 Null 值.
看了 数据库表内容转换周一周二周三...的网友还看了以下:
如表为元素周期表的一部分:(填元素符号或化学式)族周期1①2②3③④⑦⑤⑥(1)写出元素④在周期表 2020-05-02 …
一1+2+3+4+5+6+.2002=?二二分之一+四分之三+八分之七+.256分之255=?最好 2020-05-17 …
小王上周末买进股票1000股,每股20元下表为本周日股票涨跌情况周一+4 周二+5 周三-1 周四 2020-05-17 …
如果把星期一看作是0的话,那么一个星期七天,这个间距就是7,因为星期一是0,周二是1,周三是2.周 2020-05-21 …
小王上周五在股市内以收盘价(收市时的价格)每股25元买时某公司1000股,在接下来的一周交易日内, 2020-06-03 …
淋病的潜伏期为A.24小时B.3~7天C.2~3周D.1~2周E.1~2个月 2020-06-06 …
请帮下忙将数轴的正半轴绕在一个圆上.先让原点宇圆周长0所对应的点重合,再将正半轴按顺时针方向绕在该 2020-06-24 …
小明的爸爸上星期五买进某公司股票1000股,每股27元,下表为本周内每日股票的涨跌情况(单位:元) 2020-07-29 …
小王上周五在股市内以收盘价(收市时的价格)每股25元买时某公司1000股,在接下来的一周交易日内,小 2020-11-06 …
初三的旋转,急一个有六个三角形组成的六叶风车在风中匀速旋转一周需1/2秒,则经过1/10s,一个三角 2021-01-13 …