我在 CTE 之后想要返回两列,一列包含 1 的总数,一列包含 0 的总数。目前我可以让它返回一列,其中 1 的总数使用:
WITH getOnesAndZerosCTE
AS (
SELECT COUNT([message]) AS TotalNo1s
FROM dbo.post
WHERE dbo.checkletters([message]) = 1
--SELECT COUNT([message]) AS TotalNo0s
--FROM dbo.post
--WHERE dbo.checkletters([message]) = 0
)
SELECT * FROM getOnesAndZerosCTE;
我如何在同一个 CTE 中有一个名为 TotalNo0s 的第二列,我在那里发表评论以表明我的意思。
最佳答案
使用条件聚合:
WITH getOnesAndZerosCTE AS(
SELECT
TotalNo1s = SUM(CASE WHEN dbo.checkletters([message]) = 1 THEN 1 ELSE 0 END),
TotalNo0s = SUM(CASE WHEN dbo.checkletters([message]) = 0 THEN 1 ELSE 0 END)
FROM post
)
SELECT * FROM getOnesAndZerosCTE;
关于sql - 使用两个不同的子句计算两列的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323846/