有表tb, 如下:
id value remk
----- ------ -------
1 aa 123
1 bb 123
2 aaa 123
2 bbb 123
2 ccc
需要得到结果:
id values remk
------ --------- --------
1 aa 123
bb 123
2 aaa 123
bbb 123
ccc 123
你好,
请问一下是SQL 2005以上的版本么?
恩是的,sql2005
@一缕秋丝:
;WITH CTE_1 AS (
SELECT 1 [id], 'aa' [value], '123' [reme] UNION ALL
SELECT 1, 'bb', '123' UNION ALL
SELECT 2, 'aaa', '123' UNION ALL
SELECT 2, 'bbb', '123' UNION ALL
SELECT 2, 'ccc', '123'
),
CTE_2 AS (
SELECT
row_number() OVER(PARTITION BY [id] ORDER BY [id], [value]) [RowID],
*
FROM CTE_1
)
SELECT
CASE [RowID]
WHEN 1 THEN [id]
ELSE NULL
END [id],
[value],
[reme]
FROM
CTE_2
--SELECT
-- CASE [RowID]
-- WHEN 1 THEN CAST([id] AS VARCHAR(100))
-- ELSE ''
-- END [id],
-- [value],
-- [reme]
--FROM
-- CTE_2
不是那种效果,记录还是分开的,只是将id合并
不是那种效果,记录还是分开的,只是将id合并
1 aa 123
bb 123
2 aaa 123 不是这种 1 aa,bb
bbb 123 2 aaa,bbb,ccc
ccc 123
@一缕秋丝:
那你第二行id为空吗,如果为空如何取出来呢,有什么意义呢
@天行健 自强不息:作为报表的话可以很直观的看到想要的结果
这个要求够特别