SQL动态行列转换的问题,急,急,急,在线等!

hjm1980_2005 2015-11-22 09:53:14






注:有点像行列转换,相当于三行数据转换一行多列的意思,希望那位高手帮我解决,在此非常感谢!

希望能得到实例,谢谢!
...全文
178 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2015-11-23
  • 打赏
  • 举报
回复
在多人多日期的数据中,如果时间段不固定,有的3段,4段,5段,6段... 结果该怎么显示.
--小F-- 2015-11-23
  • 打赏
  • 举报
回复
提供一个思路吧 加一个自增列 然后还是用普通的行列转换就可以了。
Liyp92 2015-11-23
  • 打赏
  • 举报
回复
LZ给你我之前写过的例子。你再改改
--測試數據
SELECT * INTO #T FROM (
SELECT 'S'TYP,'A' A,'B' B,'C' C
UNION SELECT 'S','A','2','3'
)Z
 
 
SELECT *,ROW_NUMBER() OVER(PARTITION BY A ORDER BY A) ID INTO #T1 FROM #T
 
DECLARE @SQL NVARCHAR(MAX)
SET @SQL='SELECT TYP'
SELECT @SQL=@SQL+',MAX(CASE WHEN ID='+CONVERT(VARCHAR,ID)+' THEN A ELSE NULL END) [A'+CONVERT(VARCHAR,ID)+'],
MAX(CASE WHEN ID='+CONVERT(VARCHAR,ID)+' THEN B ELSE NULL END) [A'+CONVERT(VARCHAR,ID)+'],
MAX(CASE WHEN ID='+CONVERT(VARCHAR,ID)+' THEN C ELSE NULL END) [A'+CONVERT(VARCHAR,ID)+']'
FROM #T1
GROUP BY ID
ORDER BY ID
SET @SQL=@SQL+' FROM #T1 GROUP BY TYP'
EXEC(@SQL)
 
DROP TABLE #T
DROP TABLE #T1
 
/*
TYP  A1   A1   A1   A2   A2   A2
---- ---- ---- ---- ---- ---- ----
S    A    B    C    A    2    3
*/

34,576

社区成员

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

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