Mit dem Ergebnis einer Unterabfrage in einen CASE-Ausdruck mit T-SQL

Schreibe ich eine Abfrage, mit der einige Ausdrücke und es gibt Helfer-Daten Spalten, die mir helfen, festzustellen, ob oder nicht eine bestimmte Aktion erforderlich ist. Ich würde gerne wissen, ob ich irgendwie mit dem Ergebnis einer Unterabfrage, wie die Ausgabe ohne die gleiche Abfrage zweimal (zwischen WHEN (subquery) THEN und wie das Ergebnis nach THEN)

Dummy code unten beschreibt, was ich bin nach. Kann das getan werden? Ich bin der Abfrage einer MS2005 SQL-Datenbank.

SELECT   'Hello StackOverflow'
        ,'Thanks for reading this question'
        ,CASE
            WHEN 
                (
                    SELECT count(*)
                    FROM    sometable
                    WHERE   condition = 1
                    AND     somethingelse = 'value'
                ) > 0 THEN
                    -- run the query again to get the number of rows
                    (
                        SELECT count(*)
                        FROM    sometable
                        WHERE   condition = 1
                        AND     somethingelse = 'value'
                    )
            ELSE 0
         END

SELECT   'Hello StackOverflow'
        ,'Thanks for reading this question'
        ,CASE
            WHEN 
                (
                    SELECT count(*)
                    FROM    sometable
                    WHERE   condition = 1
                    AND     somethingelse = 'value'
                ) AS subqry_count > 0 THEN
                    -- use the subqry_count, which fails... "Incorrect syntax near the keyword 'AS'"
                    subqry_count
            ELSE 0
         END
Ich bin mir nicht sicher, ob ich übersehen, etwas wichtiges, aber wenn der Ausgang ist entweder die Anzahl oder 0, warum nicht einfach die Ausgabe der Zählung, die 0 ist in jedem Fall, wenn es keine übereinstimmenden Zeilen...?
Du hast vollkommen Recht @MartinParkin. Ich war ein wenig stecken in der CASE Lösung, weil ich wollte, um die Ausgabe etwas wie No Action Required. Aber 0 wird das gut machen. Danke, dass es dumm und einfach 😉
keine Probleme - ich habe eine Antwort, die Ihnen erlauben, verwenden Sie die Abfrage in der Art und Weise, die Sie wollte, wie gut. Jetzt können Sie es tun oder so 🙂
Ich habe akzeptiert Ihre Antwort. Nichtsdestotrotz ist es jetzt viel leichter. Nochmals vielen Dank. Habt einen schönen Tag

InformationsquelleAutor Ben | 2015-06-24

Schreibe einen Kommentar