【问题标题】:SQL server-2008 [closed]SQL server-2008 [关闭]
【发布时间】:2012-06-26 12:53:17
【问题描述】:

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

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 windows-server-2008


【解决方案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;

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多