行列转换

zxnainiu 2015-07-01 04:42:42
name WorkDays WeekNO
吴江市治安卡口设备项目 5 1
吴江市治安卡口设备项目 4 2
吴江市治安卡口设备项目 4 3
吴江市治安卡口设备项目 3 4


如图 数据库查出这个样子


如何行列转换变成
name 1 2 3 4(......不固定数据库查出多少就是多少)
吴江市治安卡口设备项目 5 4 4 3
...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoying1025 2015-07-01
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao的回复:
WITH table1(name,WorkDays,WeekNO)AS(
SELECT '吴江市治安卡口设备项目',5,1 UNION ALL
SELECT '吴江市治安卡口设备项目',4,2 UNION ALL
SELECT '吴江市治安卡口设备项目',4,3 UNION ALL
SELECT '吴江市治安卡口设备项目',3,4
)
SELECT *
INTO #temp
FROM table1

DECLARE @sql varchar(max)
DECLARE @columns varchar(max)

SET @columns = ''

SELECT @columns = @columns+',['+Convert(varchar(11),WeekNO)+']'
FROM #temp

SET @columns = STUFF(@columns,1,1,'')

SET @sql = '
SELECT *
FROM #temp
PIVOT (
MAX(WorkDays)
FOR WeekNO IN ('+@columns+')
) p'

PRINT @sql

EXEC(@sql)

SELECT *
FROM #temp
PIVOT (
MAX(WorkDays)
FOR WeekNO IN ([1],[2],[3],[4])
) p

name                             1           2           3           4
---------------------- ----------- ----------- ----------- -----------
吴江市治安卡口设备项目 5 4 4 3
膜拜一下
424mx 2015-07-01
  • 打赏
  • 举报
回复
哈哈 我上周也问过类似的 也是大神解决了 帮顶
Tiger_Zhao 2015-07-01
  • 打赏
  • 举报
回复
WITH table1(name,WorkDays,WeekNO)AS(
SELECT '吴江市治安卡口设备项目',5,1 UNION ALL
SELECT '吴江市治安卡口设备项目',4,2 UNION ALL
SELECT '吴江市治安卡口设备项目',4,3 UNION ALL
SELECT '吴江市治安卡口设备项目',3,4
)
SELECT *
INTO #temp
FROM table1

DECLARE @sql varchar(max)
DECLARE @columns varchar(max)

SET @columns = ''

SELECT @columns = @columns+',['+Convert(varchar(11),WeekNO)+']'
FROM #temp

SET @columns = STUFF(@columns,1,1,'')

SET @sql = '
SELECT *
FROM #temp
PIVOT (
MAX(WorkDays)
FOR WeekNO IN ('+@columns+')
) p'

PRINT @sql

EXEC(@sql)

SELECT *
FROM #temp
PIVOT (
MAX(WorkDays)
FOR WeekNO IN ([1],[2],[3],[4])
) p

name                             1           2           3           4
---------------------- ----------- ----------- ----------- -----------
吴江市治安卡口设备项目 5 4 4 3

34,597

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧