SQL Pivot 计数不完整和完整
Posted
技术标签:
【中文标题】SQL Pivot 计数不完整和完整【英文标题】:SQL Pivot count incomplete and complete 【发布时间】:2020-08-21 08:54:17 【问题描述】:首先让我先说我的 SQL 知识非常有限。 所以我有下表
现在我想在 SQL 中创建一个如下所示的数据透视表
现在第二列的 PN 可以不时重复。 虽然我设法计算了完整和不完整,但似乎无法弄清楚如何说 PN 和 EntryDate 组合(连接)是唯一的,并希望以此为基础进行计数(将绿色和黄色行视为相同的 PN)。 基本上如果“已完成”行有数据是完整的,如果 null 是不完整的。
数据库是 MS SQL 感谢所有帮助, 谢谢
【问题讨论】:
【参考方案1】:使用聚合试试下面的逻辑-
SELECT PN,
SUM(CASE WHEN completed IS NOT NULL THEN 1 ELSE 0 END) Completed,
SUM(CASE WHEN completed IS NULL THEN 1 ELSE 0 END) Incomplete,
COUNT(*) Total
FROM your_table
GROUP BY PN
或
SELECT PN,
COUNT(completed) Completed,
COUNT(*) - COUNT(completed) Incomplete,
COUNT(*) Total
FROM your_table
GROUP BY PN
正如您评论并希望按 EntryDate 单独记录,您可以执行以下操作-
SELECT PN,
SUM(CASE WHEN completed IS NOT NULL THEN 1 ELSE 0 END) Completed,
SUM(CASE WHEN completed IS NULL THEN 1 ELSE 0 END) Incomplete,
COUNT(*) Total
FROM your_table
GROUP BY PN, EntryDate
【讨论】:
这仅在您不考虑入职日期的情况下才有效 只需在 entrydate 列上应用一个额外的 GROUP BY,例如 - GROUP BY PIN, EntryDate。 我这样做了,但结果不正确` SELECT PN, Convert(VARCHAR(10),EntryDate,101) AS Data, SUM(CASE WHEN Completed IS NOT NULL THEN 1 ELSE 0 END) Completed , SUM(CASE WHEN Completed IS NULL THEN 1 ELSE 0 END) 不完整, COUNT(*) Total FROM CST_MAIN GROUP BY PN, Data ` 使用 ----- GROUP BY PN, Convert(VARCHAR(10),EntryDate,101)以上是关于SQL Pivot 计数不完整和完整的主要内容,如果未能解决你的问题,请参考以下文章