0

2 つのテーブルがあり、それぞれが独自の結果セットを 1 つの行として生成します。これらの結果セットを 1 つの行に結合したいと思います。例えば:

SELECT *
FROM Table 1
WHERE Year = 2012 AND Quarter = 1

結果:

Year  Quarter  Name  State  Mail
2012  1        Bob   NY     bob@gmail

クエリ #2:

SELECT *
FROM Table 2
WHERE Year = 2012 AND Quarter = 1

結果:

Year  Quarter  Name  State  Mail
2012  1        Greg  DC     greg@gmail

望ましい結果セット:

SELECT *
FROM Table 3
WHERE Year = 2012 AND Quarter = 1

Year  Quarter  T1Name  T1State  T1Mail     T2Name  T2State  T2Mail
2012  1        Bob     NY       bob@gmail  Greg    DC       greg@gmail

結果は、Year と Quarter の組み合わせに結合/ピボットされ、パラメーターを介してクエリに入力されます。どんな援助でも大歓迎です。前もって感謝します!

4

3 に答える 3

3

何かが欠けていない限り、テーブルを結合するだけでよいようですyear/quarterデータをピボットする必要はないようです:

select t1.year, 
  t1.quarter,
  t1.name t1Name,
  t1.state t1State,
  t1.mail t1Mail,
  t2.name t2Name,
  t2.state t2State,
  t2.mail t2Mail
from table1 t1
inner join table2 t2
  on t1.year = t2.year
  and t1.quarter = t2.quarter
where t1.year = 2012
  and t1.quarter = 1;

デモで SQL Fiddle を参照してください

yearとが両方のテーブルに存在するかどうかについて疑問がある場合は、quarterを使用できますFULL OUTER JOIN

select coalesce(t1.year, t2.year) year, 
  coalesce(t1.quarter, t2.quarter) quarter,
  t1.name t1Name,
  t1.state t1State,
  t1.mail t1Mail,
  t2.name t2Name,
  t2.state t2State,
  t2.mail t2Mail
from table1 t1
full outer join table2 t2
  on t1.year = t2.year
  and t1.quarter = t2.quarter
where (t1.year = 2012 and t1.quarter = 2)
  or  (t2.year = 2012 and t2.quarter = 2)

デモで SQL Fiddle を参照してください

于 2013-05-29T18:12:36.730 に答える
1

必要なことは、結合基準、つまり両方のテーブルで一致する値を持つ必要がある列を決定することだけです。あなたの場合、年と四半期の
ように見えるので、次のように記述します select * from Table_1 A Join Table_2 B ON A.year=B.year and A.quarter=B.quarter

于 2013-05-29T18:14:32.277 に答える
0

1 つの行を返す 2 つのクエリがある場合、次を使用してそれらを 1 つの結果行に入れることができますcross join

select t1.Year, t1.Quarter, T1.Name, T1.State, T1.Mail, T2.Name, T2.State, T2.Mail
from (SELECT *
      FROM Table 1
      WHERE Year = 2012 AND Quarter = 1
     ) t1 cross join
     (SELECT *
      FROM Table 2
      WHERE Year = 2012 AND Quarter = 1
     ) t2

それらを別々の行に入れたい場合は、使用しますunion all(同じ列が同じ位置にあると仮定します)。

于 2013-05-29T18:24:09.573 に答える