2017-03-02 6 views
1

これを手伝ってください。CASE文のSQL検索スクリプト

SELECT 
    Username, 
    CASE 
     WHEN UserType = 'DUMMY' AND UserLoginId = Username THEN 'Awaiting_Approval' 
     WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 'Checking_Approval' 
     ELSE 'No_Status_Yet' 
    END AS UserStatus 
FROM MyTable 
WHERE UserStatus LIKE '%king%' 

私はデータベースからのテキストで単純な検索を作成しようとしていますので、テキストの途中で検索できます。そこにはステータス欄がないので、2列の詳細の組み合わせから自分で作成します。誰でも助けてくれますか?ありがとう。 WHERE句であなたが直接エイリアスを使用することはできません

+0

同様

。 (値を返します) – jarlh

+0

あなたのロジックは私には意味がありません。 'WHERE'節の目的は何ですか? –

+0

サンプルテーブルのデータと予想される結果を追加します。 (書式付きテキストでも同様) – jarlh

答えて

4

、あなたがキーワード(MySQLのみで動作します)HAVING使用することができます1

SELECT * 
FROM (
    SELECT Username, 
      CASE 
       WHEN UserType = 'DUMMY' AND UserLoginId = Username THEN 'Awaiting_Approval' 
       WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 'Checking_Approval' 
       ELSE 'No_Status_Yet' 
      END AS UserStatus 
    FROM MyTable 
) AS D 
WHERE UserStatus LIKE '%king%' 
+2

真ですが、このクエリは意味がありません。 –

+1

、そうかもしれません。私はこれは完全なクエリではないと思う、OPのシナリオを表示するクエリのサンプルの一部かもしれません。 –

+1

素晴らしいです、ありがとうございます。 – saf21

-1

以下試してください。別の方法として

SELECT 
    Username, 
    CASE 
     WHEN UserType = 'DUMMY' AND UserLoginId = Username THEN 'Awaiting_Approval' 
     WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 'Checking_Approval' 
     ELSE 'No_Status_Yet' 
     END AS UserStatus 
FROM MyTable 
HAVING UserStatus LIKE '%king%' 
+1

私のdownvoteではありませんが、このトリックはMySQL(SQL Serverではなく)でのみ機能します。 –

+0

そうです、私はその情報を追加しました。 – ElChupacabra

0

を、あなたのケース式をWHERE節に追加することができます。 case式ではなく、case文だ

SELECT 
    Username, 
    'Checking_Approval' AS UserStatus 
FROM MyTable 
WHERE 1 = CASE WHEN UserType = 'DUMMY' AND UserLoginId != Username THEN 1 
      --other conditions that should be returned here 
      ELSE 0 
      END