[英]Always select a row sql
我有一個case
陳述(見下文),但我始終想返回一個值,即使沒有匹配的WHERE
句法也是如此。 那可能嗎? 謝謝
SELECT
CASE
WHEN COUNT(*) > 10 THEN 1
ELSE 0
END
FROM
fldt_QueryDSLAM lastDay
WHERE AccountID = @acc
AND lastDay.DSL = @dsl
GROUP BY lastDay.DSL
如果WHERE子句返回一行(或更精確地說是一組),則刪除GROUP BY。 這樣,您的輸出中總會有一行。
我認為它將(返回一組)是因為您在過濾器列上具有GROUP BY,並且SELECT或GROOUP BY中都未提及AccountID
SELECT
CASE
WHEN COUNT(*) > 10 THEN 1
ELSE 0
END
FROM
fldt_QueryDSLAM lastDay
WHERE
AccountID = @acc AND lastDay.DSL = @dsl
原因為何,請參見: COUNT(*)是否總是返回結果?
您可以將選擇包裝在一個isull中。
SELECT ISNULL((
SELECT
CASE
WHEN COUNT(*) > 10 THEN 1
ELSE 0
END
FROM
fldt_QueryDSLAM lastDay
WHERE AccountID = @acc
AND lastDay.DSL = @dsl
GROUP BY lastDay.DSL
), -99 /*no match*/)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.