条件 PIVOT/转换问题

发布于 2024-10-09 19:23:22 字数 506 浏览 2 评论 0原文

我有一个包含三列的表,我们将其称为 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

I'm using SQL Server 2008. 我该怎么做?

I have a table with three columns, which we'll call ID1, ID2, and Value.

Sample data:

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

Value is limited to 0, 1, or 2.

What I need to do is pivot/transform this data into a column-based count of how many times each possible Value appears, grouped by ID, ID1. The output of the above should be:

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

I'm using SQL Server 2008. How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

踏雪无痕 2024-10-16 19:23:22
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  
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  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文