-2
如果任何这些列没有返回值,试着返回0,在我的特殊情况下,'Past Due'没有总值,所以它被返回,所以我在这里获得第二个片段的回报。如果这些数值没有数值,我该如何返回?当总和没有值时返回0总和 - sql server
SELECT ClientDeliveryStatus,
SUM(CASE
WHEN ClientDeliveryStatus = 'Past Due' THEN 1
WHEN ClientDeliveryStatus = 'Due Tomorrow' THEN 1
WHEN ClientDeliveryStatus = 'Due Today' THEN 1
WHEN ClientDeliveryStatus = 'Due Beyond' THEN 1
ELSE 0 END) AS Total
FROM Table1
GROUP BY ClientDeliveryStatus
当前结果:
ClientDeliveryStatus Total
Due Beyond 1
Due Today 3
Due Tomorrow 51
所需的结果:
ClientDeliveryStatus Total
Due Beyond 1
Due Today 3
Due Tomorrow 51
Past Due 0
实施例的数据:
TABLE1:
ClientDeliveryStatus
Due Tomorrow
Due Tomorrow
Due Tomorrow
Due Beyond
Due Beyond
Due Tomorrow
Due Beyond
Due Beyond
Due Beyond
Due Today
Due Today
CREATE TABLE1 Table1 (ClientDeliveryStatus VARCHAR(MAX))
INSERT INTO Table1 Values ('Due Tomorrow'), ('Due Tomorrow'), ('Due Tomorrow'), ('Due Beyond'), ('Due Beyond'), ('Due Beyond'), ('Due Beyond'), ('Due Today'),('Due Today')
group by by,其存在于实际查询中,所以没有问题。工会会更简单还是更慢?我总是这样认为性能是一个因素,但是对于我来说,这比平均查询更重要。 – wondergoat77
没有关于工会,愚蠢的问题 – wondergoat77
@ wondergoat77。 。 。如果你有一个参考表的值,我不会感到惊讶。这将是最好的方法。 'UNION ALL'比'UNION'快。 –