2015-01-07 2 views
0

Я выбрал два разных данных из одних и тех же таблиц, но мне нужно, чтобы эти два разных слияния данных были сгруппированы в одну таблицу.Как я могу выбрать данные из двух таблиц

К примеру у меня есть это:

SELECT DISTINCT db.nazev, db.skupina, db.datum_od1, db.datum_do1, db.mnozstvi, db.cena_bez_dph, db.datum_od, db.datum_do2, db.mnozstvi2, db.cena_bez_dph2 
FROM (
SELECT s.nazev as nazev, s.kod as skupina, (select (DATE '<<datum_od1>>')) as datum_od1, (select (DATE '<<datum_do1>>')) as datum_do1, sum(f.mnozmj) as mnozstvi, sum(f.sumZkl) as cena_bez_dph FROM dpolfak as f 
LEFT OUTER JOIN ddoklfak hla ON hla.iddoklfak = f.iddoklfak 
LEFT OUTER JOIN ccenik c ON c.kod = f.kod 
LEFT OUTER JOIN cskupzboz s ON s.idskupzboz = c.idskupzboz 
where f.modul = 'FAV' and f.datvyst >= '<<datum_od1>>' and f.datvyst <= '<<datum_do1>>' 
GROUP BY s.nazev, s.kod 
UNION ALL 
SELECT s.nazev as nazev, s.kod as skupina, (select (DATE '<<datum_od2>>')) as datum_od2, (select (DATE '<<datum_do2>>')) as datum_do2, sum(f.mnozmj) as mnozstvi2, sum(f.sumZkl) as cena_bez_dph2 FROM dpolfak as f 
LEFT OUTER JOIN ddoklfak hla ON hla.iddoklfak = f.iddoklfak 
LEFT OUTER JOIN ccenik c ON c.kod = f.kod 
LEFT OUTER JOIN cskupzboz s ON s.idskupzboz = c.idskupzboz 
where f.modul = 'FAV' and f.datvyst >= '<<datum_od2>>' and f.datvyst <= '<<datum_do2>>' 
GROUP BY s.nazev, s.kod 
) db 

Но проблема в том, что фикция «UNION ALL» объединить все данные в один так, но мне нужно выбрать Diferent данных из таблицы два в новые столбцы, которые вы можете увидеть это в основном выберите.

Главная проблема заключается в том, что это не работают «db.datum_do2, db.mnozstvi2, db.cena_bez_dph2» с функцией объединения всех (она до сих пор пишут мне, что колонка оленья кожа существует). Как я могу это исправить?

Это мое фактически результат:

nazev     skupina Datum  Datum  Množství Cena bez DPH 
Směsi éterických olejů | SL024 | 01.12.2014 | 19.12.2014 | 1 798,00 | 208 142,79 

Směsi éterických olejů | SL024 | 20.11.2014 | 07.01.2015 | 662,00 | 86 374,52 

и я хочу это:

nazev     skupina Datum  Datum  Množství Cena bez DPH Datum 2  Datum 2  Množství 2 Cena bez DPH 2 
Směsi éterických olejů | SL024 | 01.12.2014 | 19.12.2014 | 1 798,00 | 208 142,79 |20.11.2014 | 07.01.2015 | 662,00 | 86 374,52 

ответ

1

Если вы действительно хотите UNION всех столбцов в различных запросах отделенные, вы можете сделать что-то вроде это:

select col1, case when q = 1 then colA end, case when q = 2 then colA end,... 
(select col1, colA as colA, 1 as q 
from... 
union all 
select col1, colB as colA, 2 as q 
from... 
) db 

или

select col1, col2 etc 
(select col1, colA, null from... 
UNIOM ALL 
select col1, null, colB from...) 
+0

Когда я попробовать свой второй вариант, так что до сих пор пишут мне это «» db.datum_do2, db.mnozstvi2, db.cena_bez_dph2" (он до сих пор пишут мне, что колонка оленья кожа существует).» –

+0

Назовите столбец в первом выборе UNION. – jarlh

Смежные вопросы