sql - 如何在 SQL Server 中使用数据透视在 count() 中获取“0”
问题描述
我正在SELECT
对我的表做一个PIVOT
声明。当它MARCA_INCUMP
以列[0]
和[1]
某些年份计算字段时,它没有记录,我需要它显示零(0)。在它有记录的另一年,它显示没有问题。
SELECT FECHA_SOLICITUD, GRUPO AS GRUPO, [0], [1],
([0]+[1]) AS TOTAL, ([1]*1.0) / ([0]+[1]) AS PD_REAL
FROM (SELECT MARCA_INCUMP, GRUPO, FECHA_SOLICITUD FROM MyTable) AS SourceTable
PIVOT (
COUNT(MARCA_INCUMP)
FOR MARCA_INCUMP IN ([0], [1])
) AS PivotTable
GROUP BY fecha_solicitud, GRUPO, [0], [1]
ORDER BY FECHA_SOLICITUD, GRUPO ASC;
我需要这个
DATE GRUPO [0] [1] TOTAL PD
201411 1 0 0 0 0.000000000000
201411 2 30 3 33 0.090909090909
201411 3 89 2 91 0.021978021978
201411 4 82 7 89 0.078651685393
201411 5 185 20 205 0.097560975609
201411 6 129 21 150 0.140000000000
201411 7 70 14 84 0.166666666666
201411 8 40 12 52 0.230769230769
201411 9 38 31 69 0.449275362318
201411 10 10 19 29 0.655172413793
我有这个
DATE GRUPO [0] [1] TOTAL PD
201412 2 37 1 38 0.026315789473
201412 3 83 5 88 0.056818181818
201412 4 78 9 87 0.103448275862
201412 5 207 24 231 0.103896103896
201412 6 117 19 136 0.139705882352
201412 7 75 17 92 0.184782608695
201412 8 30 11 41 0.268292682926
201412 9 35 33 68 0.485294117647
201412 10 8 34 42 0.809523809523
解决方案
您应该LEFT JOIN
在返回所有可能的时期(或组)的查询和您现有的查询之间进行操作。如果可能的期间只是月份数字,您可以在VALUES
子句中指定它们。如果可能的组在不同的表中,只需使用该表。
推荐阅读
- c++ - C++ 指针表示法
- javascript - Javascript / JQuery 从表上的输入框中获取值
- php - 将部分 json 对象插入数据库仅插入一个括号
- .net-core - 在应用程序启动时设置 Hangfire 循环作业时出错
- cassandra - 如何将昨天的 Cassandra 数据复制到 csv
- python - 接收一个字母并将该字母向右旋转 13 位的 Python 函数
- python - PyQt4 / QTableView:如何更改选择矩形的样式?
- swift - Swift 函数和参数
- java - WebLogic 部署成功但出现错误
- javascript - JSON数据解析