【问题标题】:Conditional PIVOT/transform problem条件 PIVOT/变换问题
【发布时间】:2010-12-31 03:47:08
【问题描述】:

我有一个包含三列的表,我们将其称为 ID1、ID2 和 Value。

样本数据:

ID  ID1 Value
1   1   0
1   2   1
1   3   1
1   3   2
1   4   0
1   4   1
1   5   0
1   5   2
2   1   2

值限制为 0、1 或 2。

我需要做的是将这些数据透视/转换为基于列的计数,以计算每个可能的值出现的次数,按 ID、ID1 分组。上面的输出应该是:

ID  ID1  Val0  Val1  Val2
1   1    1     0     0
1   2    0     1     0
1   3    0     1     1
1   4    1     1     0
1   5    1     0     1
2   1    0     0     1

我使用的是 SQL Server 2008。我该怎么做?

【问题讨论】:

  • 我假设结果中的第二行应该是1 2 0 1 0?源数据中只有一行1 2 1
  • 你是对的。我已经修好了。

标签: sql sql-server pivot transformation


【解决方案1】:
SELECT ID,
       ID1,
       COUNT(CASE WHEN Value=0 THEN 1 END) AS Val0,
       COUNT(CASE WHEN Value=1 THEN 1 END) AS Val1,
       COUNT(CASE WHEN Value=2 THEN 1 END) AS Val2
FROM   your_table
GROUP  BY ID,
          ID1  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多