SQL一般の話となりますが、当質問ではMySQLを主軸に質問させていただきます。
###前提・実現したいこと
【目標】下表の通りのSQL結果を出力。
COUNT値を直接評価し、正数ならそのまま出力し
ゼロ以下であれば固定文字「NG」を出します。
列1 | 列2 | COUNT値 |
---|---|---|
aさん | 001 | COUNT値(←count(*)>0はそのまま出す ) |
bさん | 002 | "NG"(←count(*)<=0は固定文字'NG'と出す) |
cさん | 003 | ・・・同じく |
###試したこと
一気に畳みかけずに、エラーが出ないように段階的に条件を追加しましたが
SQL文法エラーとなったりしています。
上表の例では、現在は下記SQLを仮定しています。
SQL
1SELECT 列1,列2,(COUNT(*)) AS COUNT値 2FROM テーブル 3GROUP BY 列1,列2
上記「COUNT(*)」の箇所を
SQL
1CASE WHEN COUNT(*) >0 THEN ??? ELSE 'NG' END
という流れを考えてました。
上記の「???」がどうなるのかが悩んでおります。
最終目標としては上記「前提・実現したいこと」でお伝えした通りの形式ですが
そもそも「CASE文の組み方がおかしい」のか、「CASE以外の方法が思いつかない」のか
いずれか一つと考えております。
皆さまでしたら、どのような攻め方をお考えになるかお聞かせください。

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/12 14:31
2017/10/13 00:31
2017/10/13 02:03
2017/10/13 04:28