0
SELECT DISTINCT AppID,
                CASE
                  WHEN Category = '< 18 years old' THEN 'yes'
                  ELSE ''
                END AS '<18years old',
                CASE
                  WHEN Category = 'SSN Exists' THEN 'yes'
                  ELSE ''
                END AS 'Applicant has SSN',
                CASE
                  WHEN Category = 'Self Employed' THEN 'yes'
                  ELSE ''
                END AS 'Self employed'
FROM   Table1
WHERE  AppID = 123 

OUTPUT Desired 各 AppID に関連するすべての情報が 1 行しかない以下の結果を生成しようとしています。上記のコードは、アプリケーションごとに複数の行を生成します。ケースステートメントを 1 つの END でまとめようとしましたが、END キーワードの前にエイリアスを使用するとエラーが発生します。ありがとう

AppID         <18 Year old           Applicant has SSN           Self employed  

123     yes         yes
124                 yes         yes
125                 yes         yes
4

4 に答える 4

1

group byではなくが必要ですdistinct

SELECT AppID,
       max(CASE WHEN Category = '< 18 years old' THEN 'yes'
                ELSE ''
           END) AS '<18years old',
       max(CASE WHEN Category) = 'SSN Exists' THEN 'yes'
                ELSE ''
           END) AS 'Applicant has SSN',
       max(CASE WHEN Category = 'Self Employed' THEN 'yes'
                ELSE ''
           END) AS 'Self employed'
FROM   Table1
WHERE  AppID = 123
group by AppId
于 2012-11-29T16:45:00.100 に答える
0

次のように Case ステートメントをネストし、最後にエイリアスを付けることができます。

CASE WHEN 
    Category = '< 18 years old' 
THEN 'yes'
ELSE
    CASE WHEN
        Category = 'SSN Exists'
    THEN 'yes'
    ELSE
        ...
        ...
    END
END AS Alias

それはあなたが求めているものですか?

于 2012-11-29T16:42:53.880 に答える
0

エイリアスは '' で囲まないでください。

エイリアスを囲むために使用する必要がある文字の種類を DB エンジンで確認してください。

于 2012-11-29T16:43:17.197 に答える
0

私が問題を正しく理解している場合は、次のことを行う必要がありますGROUP BY

SELECT  AppID,
        MAX(CASE
          WHEN Category = '< 18 years old' THEN 'yes'
          ELSE ''
        END) AS '<18years old',
        MAX(CASE
          WHEN Category = 'SSN Exists' THEN 'yes'
          ELSE ''
        END) AS 'Applicant has SSN',
        MAX(CASE
          WHEN Category = 'Self Employed' THEN 'yes'
          ELSE ''
        END) AS 'Self employed'
FROM   Table1
WHERE  AppID = 123 
GROUP BY AppID
于 2012-11-29T16:44:54.047 に答える