私はカラムが "user_name"と "characteristic"の2列テーブルを持っています。各user_nameは、異なる特性を持つ複数回表示されることがあります。sql caseステートメントIN with group by
特性値は以下のとおりです。
- オンライン
- のInStore
- アカウント
- 私はこのように書きSQL文を書きたいメール
- しかし、明らかに、このは動作していません:
SELECT user_name,
case
when characteristic in ("online","instore") then 1
else 0
END as purchase_yn,
case
when characteristic in ("online","instore") and
characteristic in ("email",'account') then 1
else 0
END as purchaser_with_account
FROM my_table
GROUP BY user_name;
最初のフラグは、そのuser_nameのいずれかの値の存在をチェックするフラグです。
SELECT user_name,
COUNT(case when characteristic in ("online","instore") then 1 END) as purchase_yn,
COUNT(case when characteristic in ("email",'account') then 1 END) as user_with_account
FROM my_table
GROUP BY user_name
の場合: 第二フィールドは、彼らがこの基準を満たしており、彼らは「メール」または「アカウント」
これは無効な標準のSQLです。どのDBMSを使用していますか? –
@a_horse_with_no_name、二重引用符を使用しているとしますか? (そして一重引用符でそれらを混ぜる)。私はコードがうまくいかないと言ったので、私はあまりそれを作っていませんでした...それは失敗する2つの方法がなければならないように見えます。それでもDBMSを知っておくとよいでしょう。 –
@runningbirds、あなたのニーズを満たす下記の答えをお試しください。もしそうなら、あなたはそれを「受け入れられた」とマークするべきです。そうでない場合、戻って残りの問題について教えてください(そしてSQL Server、MySQL、Oracle、MS-Access、その他のものなど、使用しているDBMSの質問に答えてください)。 –