簡體   English   中英

總是選擇一行SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM