按 ID分组把值显示到一行,值不会超过5个,值的排列不要求顺序
格式
ID 值
A 1
A 2
B 3
B 4
B 5
C 6
C 7
……
显示
ID 列1 列2 列3 列4 列5
A 1 2
B 3 4 5
C 6 7
……
格式
ID 值
A 1
A 2
B 3
B 4
B 5
C 6
C 7
……
显示
ID 列1 列2 列3 列4 列5
A 1 2
B 3 4 5
C 6 7
……
解决方案 »
- |zyciis| PowerDesign 12.5 导出的domain在SQL2005中执行报错:'type' 附近有语法错误。
- sql用户自定义函数和存储过程有什么区别?
- 急求 sqlserver int 转 datetime 函数
- 如何列出数据库里的所有的存储过程的名字?
- 求 一简单查询 急急 在线等
- 急!!!请问在查讯日期是着样精确到日期就行了?
- 请教关于asp与sql server2000数据库中的存储过程连接的问题
- 问个T-SQL语句问题
- 关于请求订阅的问题,请高手们看看!
- 一个sqlserver的sql语句
- 求平均下班时间
- sql server 如何实现Concat()和Format()这两个函数
--测试数据
IF OBJECT_ID('tempdb..#tab') IS NOT NULL
DROP TABLE #tab
CREATE TABLE #tab(
id VARCHAR(20),
NAME VARCHAR(20)
)
INSERT INTO #tab
SELECT 'A','1' UNION ALL
SELECT 'A','2' UNION ALL
SELECT 'A','3' UNION ALL
SELECT 'B','4' UNION ALL
SELECT 'B','5' UNION ALL
SELECT 'C','6' UNION ALL
SELECT 'C','7' UNION ALL
SELECT 'C','8' UNION ALL
SELECT 'C','9'
--测试数据结束DECLARE @name VARCHAR(MAX),
@sql VARCHAR(MAX)
SET @name = STUFF(
(
SELECT DISTINCT ',[' + [rn] + ']'
FROM (
SELECT *,
'列' + CAST(
ROW_NUMBER() OVER(PARTITION BY id ORDER BY NAME)
AS VARCHAR(20)
) AS rn
FROM #tab
)a FOR XML PATH('')
),
1,
1,
''
)
SET @sql =
'SELECT * from (SELECT * ,''列''+cast(row_number () over(PARTITION BY id ORDER BY NAME) as VARCHAR(20)) as rn FROM #tab)a pivot(max(name) for rn in('
+ @name + '))a'EXEC (@sql)id 列1 列2 列3 列4
-------------------- -------------------- -------------------- -------------------- --------------------
A 1 2 3 NULL
B 4 5 NULL NULL
C 6 7 8 9下次发帖记得给分,不然都没人理你,你看是不是。还好CSDN有我这样的好人啊,哈哈。
select ID,
max(case when rn=1 then value else '' end) as col_1,
max(case when rn=2 then value else '' end) as col_2,
max(case when rn=3 then value else '' end) as col_3,
max(case when rn=4 then value else '' end) as col_4,
max(case when rn=5 then value else '' end) as col_5
from
(select *,ROW_NUMBER() over (partition by id order by value) as rn from table) as A
group by id
CSDN没发消息通知, 只是发了2个公告贴子。
http://bbs.csdn.net/topics/392275029
http://bbs.csdn.net/topics/392275720
还好了,不用太生气,,反正我的分够用的,,我都不怎么用,,需要的话,我可以分享点,,我们的分肯定是够了, 新人就惨, 现在好多人都得花钱买C币来下载、发贴了。
有点担心这样下去人气是不是会下降
总体感觉现在CSDN论坛人气是在下降,,,博客更是,,,不知道在做什么
哈哈,我都把c币去抽奖了,啥都没抽到,完全是骗人的,csdn越来越会扯淡了
SELECT 'A','1' UNION ALL
SELECT 'A','2' UNION ALL
SELECT 'A','3' UNION ALL
SELECT 'B','4' UNION ALL
SELECT 'B','5' UNION ALL
SELECT 'C','6' UNION ALL
SELECT 'C','7' UNION ALL
SELECT 'C','8' UNION ALL
SELECT 'C','9'
)
select * from (
select *,N'列'+LTRIM(row_number()over(partition by ID order by data)) as seq from t
) as x pivot (max(data) for seq in ([列1],[列2],[列3],[列4],[列5])) as p
+----+----+----+------+------+------+
| ID | 列1 | 列2 | 列3 | 列4 | 列5 |
+----+----+----+------+------+------+
| A | 1 | 2 | 3 | NULL | NULL |
| B | 4 | 5 | NULL | NULL | NULL |
| C | 6 | 7 | 8 | 9 | NULL |
+----+----+----+------+------+------+