请帮我解决这个问题是什么
ID Name Items
101 A x
102 B Y
101 A Z
102 B S
102 B J
101 A Q
现在我必须展示
Id Name Items
101 A X
Z
Q
102 B Y
S
J
请帮我解决这个问题是什么
ID Name Items
101 A x
102 B Y
101 A Z
102 B S
102 B J
101 A Q
现在我必须展示
Id Name Items
101 A X
Z
Q
102 B Y
S
J
这是一个 SQL 示例,它生成类似于您问题中的临时表,然后使用 CTE(通用表表达式)和case
语句输出数据。在 MS SQL Server 2008 R2 中测试。
CREATE TABLE #test (
id INT,
Name varchar,
items varchar
);
INSERT INTO #test VALUES
(101, 'A', 'x'),
(102, 'B', 'Y'),
(101, 'A', 'Z'),
(102, 'B', 'S'),
(102, 'B', 'J'),
(101, 'A', 'Q');
WITH tmp AS (
SELECT CAST(id AS varchar) AS id
, name
, items
, row_number() OVER (PARTITION BY id ORDER BY id) AS rn
FROM #test
)
SELECT
(CASE WHEN rn = 1 THEN id ELSE '' END) AS id
,(CASE WHEN rn = 1 THEN name ELSE '' END) AS name
,items
FROM tmp;
DROP TABLE #test;
您不能在 sql 查询中完全做到这一点。如果它只是你想要的顺序,那么这个:
select id, name, items
from tableName
order by id, name, items desc
但这不是你想要的,不是吗?