Как я могу выбрать данные из двух таблиц

Я выбрал два разных данных из одних и тех же таблиц, но мне нужно объединить эти два разных данных в одну таблицу при выборе.

Например, у меня есть это:

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

Но проблема в том, что функция «ОБЪЕДИНЕНИЕ ВСЕХ» объединяет все данные в один, поэтому мне нужно выбрать разные данные из таблицы два в новые столбцы, которые вы видите в основном выборе.

Основная проблема в том, что это не работает "db.datum_do2, db.mnozstvi2, db.cena_bez_dph2" с функцией union all (мне все равно пишет, что столбец не существует). Как я могу это исправить?

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

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

person Radek Tarant    schedule 07.01.2015    source источник


Ответы (1)


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

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

or

select col1, col2 etc
(select col1, colA, null from...
 UNIOM ALL
 select col1, null, colB from...)
person jarlh    schedule 07.01.2015
comment
Когда я пробую ваш второй вариант, он все равно пишет мне это db.datum_do2, db.mnozstvi2, db.cena_bez_dph2 (он все еще пишет мне, что столбец не существует). - person Radek Tarant; 07.01.2015
comment
Назовите столбец в первом выборе UNION. - person jarlh; 07.01.2015