-2

请帮我解决这个问题是什么

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
4

2 回答 2

1

这是一个 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;
于 2012-06-26T14:20:20.030 回答
0

您不能在 sql 查询中完全做到这一点。如果它只是你想要的顺序,那么这个:

 select id, name, items 
 from tableName
 order by id, name, items desc

但这不是你想要的,不是吗?

于 2012-06-26T12:58:37.557 回答