0

複数の列の値を 1 つに結合して、ロールアップ テーブルの新しい列で明確にラベル付けしようとしています。たとえば、以下を参照してください。

例:

(select
  id, size, size2
from
  table1
where
  date = curdate()
)a

union all

(select
  id, size, size2
from
  table2
where
  date = curdate()
)b

出力:

ID サイズ size2

1 23 47
2 25 33

size と size2 を 1 つの列に結合し、それらにラベルを付ける別のフィールドを作成するにはどうすればよいですか?

出力は次のようになります。

ID 値のタイプ

1 23サイズ

2 47 サイズ2

3 25サイズ

4 33 サイズ 2

これはある種のケースステートメントであるべきだと思っていますが、それについて頭を悩ませているようには見えません。何か案は?

4

1 に答える 1

1

4 つの部分の和集合を書くことができます。新しい ID は table1/2.ids からインターリーブされます。

(SELECT id*2+0, size,  'size'  FROM table1 WHERE date = curdate())
UNION ALL
(SELECT id*2+0, size2, 'size2' FROM table1 WHERE date = curdate())
UNION ALL
(SELECT id*2+1, size,  'size'  FROM table2 WHERE date = curdate())
UNION ALL
(SELECT id*2+1, size2, 'size2' FROM table2 WHERE date = curdate())
于 2012-06-19T22:28:08.873 に答える