• 締切済み

SQL コマンド

データの変換するコマンドを教えてください A|B ==== 1|A 2|B 3|C 4|A 5|D 6|A 7|D というテーブル内容を以下のように出力したいです。 だれがよいコマンドを教えてくださいませんか。 A B C D 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1

みんなの回答

回答No.2

質問に示されたデータでは、ソートに利用できるキーがないので、 検索結果の順序は保証されませんよ? <SQL例1> select case when B='A' then 1 else 0 end as A, case when B='B' then 1 else 0 end as B, case when B='C' then 1 else 0 end as C, case when B='D' then 1 else 0 end as D from t1 上記のSQLを活用すると、次のような検索結果を得ることも可能です。 A B C D 3 1 1 2 上記の結果を得るには、次のようなSQLになります。 <SQL例2> select sum(A) as A, sum(B) as B, sum(C) as C, sum(D) as D from ( select case when B='A' then 1 else 0 end as A, case when B='B' then 1 else 0 end as B, case when B='C' then 1 else 0 end as C, case when B='D' then 1 else 0 end as D from t1 ) as x

回答No.1

SELECT CASE WHEN B = 'A' THEN '1000' WHEN B = 'B' THEN '0100' WHEN B = 'C' THEN '0010' WHEN B = 'D' THEN '0001' END AS ABCD FROM テーブル名 ORDER BY A; というベタなのはダメですか?