【问题标题】:Transposing SQL Table Columns to Rows with Count on Each Category将 SQL 表列转换为每个类别都有计数的行
【发布时间】:2021-07-24 00:41:04
【问题描述】:

我有一个包含 12,000 行数据的表。该表由 7 列数据(PIDA、NIDA、SIDA、IIPA、RPRP、IORS、DDSN)组成,每列有 4 种条目类型(“支持”、“不支持”、“未编目”或“NULL”条目)

+--------------+-----------+--------------+-----------+
|     PIDA     |   NIDA    |     SIDA     |   IIPA    |
+--------------+-----------+--------------+-----------+
| Null         | Supported | Null         | Null      |
| Uncatalogued | Supported | Null         | Null      |
| Supported    | Supported | Uncatalogued | Supported |
| Supported    | Null      | Uncatalogued | Null      |
+--------------+-----------+--------------+-----------+

我想生成一个输出,其中每个条目都针对每一列进行计数。喜欢列到行的转置。

+---------------+------+------+------+------+
|  Categories   | PIDA | NIDA | SIDA | IIPA |
+---------------+------+------+------+------+
| Supported     |   10 |   20 |   50 |    1 |
| Non Supported |   30 |   50 |   22 |    5 |
| Uncatalogued  |    5 |   10 |   22 |   22 |
| NULL          |   10 |   11 |   22 |   22 |
+---------------+------+------+------+------+

内联选择或案例语句没有任何运气。我感觉两者都需要先计数,然后将每个列为输出中的行

谢谢大家,

【问题讨论】:

  • 听起来你需要PIVOTTHIS 给你一个起点吗?

标签: sql sql-server select count transpose


【解决方案1】:

一种选择是UNPIVOT您的数据,然后PIVOT结果

示例

Select *
 From  (
        Select B.* 
         From  YourTable A
         Cross Apply ( values (PIDA,'PIDA',1)
                             ,(NIDA,'NIDA',1)
                             ,(SIDA,'SIDA',1)
                             ,(IIPA,'IIPA',1)
                     ) B(Categories,Item,Value)
       ) src
 Pivot ( sum(Value) for Item in ([PIDA],[NIDA],[SIDA],[IIPA] ) ) pvt

结果(小样本)

Categories      PIDA    NIDA    SIDA    IIPA
NULL            1       1       2       3
Supported       2       3       NULL    1
Uncatalogued    1       NULL    2       NULL

【讨论】:

  • 绝对,绝对精彩!!!!!!!这为我节省了一个周末在网上搜索的时间。谢谢 - 它非常适合我的时髦桌子。
  • @NanoNet 总是乐于提供帮助
  • @NanoNet 如果您发现此答案有帮助,请随时接受。这是一个小小的表示感谢,并向其他贡献者表明问题已得到解决。
猜你喜欢
  • 1970-01-01
  • 2020-08-05
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多