2017-12-05 8 views
0

複数の異なるクエリがあり、その結果を1つのテーブルに保存したい。このクエリの結果には、行数と列数が異なる場合があります。Stroring 1つのテーブルへのクエリの結果

私は3つのクエリ:

Q1を持っています。 select name,id from employee;(結果は2列2行)

Q2。 select salary from emp_table(結果は1列4列)

Q3。 select country_name,Country_id,count(id) from players group by country_name,Country_id(結果は3列と3行を持つ)

さて、私のような構造を有する一つのテーブルに、これらの結果を保存する:このテーブルQUERY_IDで

Query_ID | col1 | col2 | col3 
------------------------------- 

はA1、A2のようなクエリに固有のIDです。 、A3 ...

クエリの結果が3つ未満の列の場合、残りの列はNULLで埋める必要があります(最初のクエリのcol3はnull、2番目のクエリのcol2とcol3はnullにする必要があります)。

所望の出力:

Query_ID | col1 | col2 | col3 
---------- 
A1  | John | 1356 | NULL 
A1  | Mathew | 1667 | NULL 
A2  | 1500 | NULL | NULL 
A2  | 2000 | NULL | NULL 
A2  | 3000 | NULL | NULL 
A2  | 3500 | NULL | NULL 
A3  | US  | 010 | 25 
A3  | UK  | 012 | 26 
A3  | GER | 016 | 16 

答えて

0

あなたは別のクエリの均一な結果セットを持っているあなたのフィールドにエイリアスを使用することができます。 Q3 select country_name as col1,Country_id as col2,count(id) as col3 from players group by country_name,Country_id

についてはQ1 select name as col1,id as col2, '' as col3 from employee;

Q2については

select salary as col1, '' as col2, '' as col3 from emp_table

については

その後、あなたはそれらのクエリを保存するために、あなたのINSERT文を使用することができます。例:

INSERT INTO table (col1,col2,col3) select name as col1,id as col2, '' as col3 from employee;

あなたのinsert文にしたいと、あなたは上記のいずれかのクエリを使用することができます。

0

あなたがフェッチされた列のデータ型に互換性があることを確認してくださいUnion All

SELECT 'A1' AS Query_ID, name AS Col1, id AS Col2, '' AS Col3 
FROM employee 

UNION ALL 

SELECT 'A2' AS Query_ID, salary AS Col1, '' AS Col2, '' AS Col3 
FROM emp_table 

UNION ALL 

SELECT 'A2' AS Query_ID, country_name AS Col1, Country_id AS Col2, count(id) AS Col3 
FROM players 
GROUP BY country_name, Country_id 
0
insert into new_table (query_id,col1,col2,col3) 
select 'A1' as QUERY_ID,name as col1,id as col2,'' as col3 from employee 
union all 
select 'A2' AS QUERY_ID,salary as col1,'' as col2,'' as col3 from emp_table 
union all 
select 'A3' AS QUERY_ID,country_name,Country_id,count(id) from players group by country_name,Country_id; 

を使用してください。 nameカラムがvarcharで、フェッチしている給与が失敗する数値であるとします。

関連する問題