【问题标题】:How to query an MSSQL database如何查询 SQL 数据库
【发布时间】:2013-06-21 11:29:32
【问题描述】:

图01是数据库中的一个表,我想提取数据如图02所示。

我应该使用哪个查询?

Col_1 中的唯一元素应成为新表的列名,Col_2 中的元素应成为图 02 所示的值。

【问题讨论】:

    标签: c# database sql-server-2008


    【解决方案1】:

    您可以使用PIVOT 函数和row_number() 来获得结果:

    select A, B
    from
    (
      select col_1, col_2,
        row_number() over(partition by col_1 order by col_2) rn
      from yourtable
    ) d
    pivot
    (
      max(col_2)
      for col_1 in (A, B)
    ) piv;
    

    SQL Fiddle with Demo

    或者您可以使用带有 CASe 表达式的聚合函数将行转换为列:

    select 
      max(case when col_1 = 'A' then col_2 end) A,
      max(case when col_1 = 'B' then col_2 end) B
    from
    (
      select col_1, col_2,
        row_number() over(partition by col_1 order by col_2) rn
      from yourtable
    ) d
    group by rn;
    

    SQL Fiddle with Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多