当前位置: 首页 > 面试题库 >

SQL将具有相同值的行分组,并将该值放入标头?

周泰
2023-03-14
问题内容

我想用SQL对行进行分组,我的结果集如下

name size date
data1 123 12/03/2009
data1 124 15/09/2009
data2 333 02/09/2010
data2 323 02/11/2010 2010
data2 673 2014/02/09
data2 444 05/01/2010

我想对结果集进行这样的分组:

data1
123 12/03/2009
124 15/09/2009
data2
333 02/09/2010
323 02/11/2010
673 02/09/2014
444 05/01/2010

用纯SQL可以做到这一点吗?

干杯。


问题答案:

GROUP BY WITH ROLLUP(您并不是真正地分组-因此您将切实地在GROUP BY每一列中进行分组)

http://dev.mysql.com/doc/refman/5.0/en/group-by-
modifiers.html

http://chiragrdarji.wordpress.com/2008/09/09/group-by-cube-rollup-and-sql-
server-2005/

http://databases.about.com/od/sql/l/aacuberollup.htm

http://www.adp-gmbh.ch/ora/sql/group_by/group_by_rollup.html

http://msdn.microsoft.com/en-
us/library/bb522495.aspx

根据Lieven的代码:

DECLARE @Table TABLE (
     name varchar(32)
    ,Size integer
    ,Date datetime
    )

INSERT  INTO @Table
VALUES  ('data1', 123, GETDATE())
INSERT  INTO @Table
VALUES  ('data1', 124, GETDATE())
INSERT  INTO @Table
VALUES  ('data2', 333, GETDATE())
INSERT  INTO @Table
VALUES  ('data2', 323, GETDATE())
INSERT  INTO @Table
VALUES  ('data2', 673, GETDATE())
INSERT  INTO @Table
VALUES  ('data2', 444, GETDATE())

SELECT  *
FROM    (
         SELECT *
         FROM   @Table
         GROUP BY NAME
               ,size
               ,date
                WITH ROLLUP
        ) AS X
WHERE   NAME IS NOT NULL
        AND (
             (
              Size IS NOT NULL
              AND Date IS NOT NULL
             )
             OR (
                 Size IS NULL
                 AND date IS NULL
                )
            )
ORDER BY NAME
       ,size
       ,date


 类似资料:
  • 问题内容: 我有一个要解析的XML文件。XML是使用Excel通过Excel创建的 另存为XML 由于XML文件是从Microsoft Excel创建的,因此具有以下标头: 我尝试提取的数据按如下所示设置在块中: 现在,我的查询看起来像这样: 并给我这些结果: 我想将其分为4行,所以我会得到以下信息: 我尝试选择一个列作为 但是我只是得到了所有的价值。 有什么办法吗? XML文件的一般结构如下所示

  • 问题内容: 我有两个表,关键字和数据。 表关键字具有2列(id,关键字),表数据具有3列(id [keywords.id的外键,名称,值]。 我正在使用此查询: 它返回类似: 每个id的值可以为0到3(将来可能会更多)。 如何在同一行中检索具有相同ID的所有行? 喜欢 我想这样做是因为我希望能够对值进行排序。 问题答案: 像这样使用: 另外,您可能需要根据需要获取确切的值顺序。像这样:

  • 我有一个具有相同键值uid的多维数组。我想把它转换成子数组通过限制Foreachloop.you可以看到两个uid有值100和两个uid有值5465 我想得到这样的阵列。 我可以不使用foreach循环得到结果吗?

  • 问题内容: 我正在尝试将具有相同ID但具有不同列值的不同行合并为一个。 例如 : 我希望将其结合起来,这样结果是: 或者 或上述内容的任何其他变体,以使行以某种方式连接在一起。 任何帮助,将不胜感激!提前致谢。 问题答案: 请先阅读我的评论-除非仅用于报告目的,否则您甚至都不要考虑这样做,并且您想了解如何在普通SQL中做到这一点(而不是使用报告的正确解决方案)工具)。 第二种格式最简单,特别是如果

  • 问题内容: 我有一个列的表,让我们把它称为是目前该表中的所有行。我想将所有行的值插入该列。有人可以给我这个SQL吗? 我已经尝试过了,但这仅填充了最后一行。如何一次完成所有行? 问题答案: 您正在寻找UPDATE not insert。 UPDATE将更改现有行的值(并且可以包含WHERE以使其仅影响特定行),而INSERT将添加新行(这使其看起来仅更改了最后一行,但实际上是添加了新行)具有该值的