Новичок
Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.9.2014
Репутация: нет Всего: нет
|
Тогда выберутся все записи, в т.ч. и из верхнего UNION. Мой запрос такой: | Код | SELECT 'Номенклатура' as detail, 'Ед изм' as dim,'АЗС ООО' AS f1, 'Кол-во' AS sal1, 'Цена' AS price1, 'Сумма' AS price_sal1,'Волгатерм ООО' AS f2, 'Кол-во' AS sal2, 'Цена' AS price2, 'Сумма' AS price_sal2,'Океан' AS f3, 'Кол-во' AS sal3, 'Цена' AS price3, 'Сумма' AS price_sal3 FROM tab_bill_detail UNION SELECT x.f_detail_name as detail, x.f_dimension as dim, '' AS f1, SUM(CASE WHEN x.f_billID = 6 THEN x.f_order ELSE NULL END) AS sal1, SUM(CASE WHEN x.f_billID = 6 THEN x.f_price ELSE NULL END) AS price1, SUM(CASE WHEN x.f_billID = 6 THEN x.f_summa ELSE NULL END) AS price_sal1, '' AS f2, SUM(CASE WHEN x.f_billID = 3 THEN x.f_order ELSE NULL END) AS sal2, SUM(CASE WHEN x.f_billID = 3 THEN x.f_price ELSE NULL END) AS price2, SUM(CASE WHEN x.f_billID = 3 THEN x.f_summa ELSE NULL END) AS price_sal2, '' AS f3, SUM(CASE WHEN x.f_billID = 5 THEN x.f_order ELSE NULL END) AS sal3, SUM(CASE WHEN x.f_billID = 5 THEN x.f_price ELSE NULL END) AS price3, SUM(CASE WHEN x.f_billID = 5 THEN x.f_summa ELSE NULL END) AS price_sal3 FROM (SELECT e.f_billID, e.f_npp, e.f_detail_name, e.f_dimension, e.f_order, e.f_price, e.f_summa, (SELECT COUNT(*) FROM tab_bill_detail d WHERE e.f_billID = d.f_billID ) FROM ref_client INNER JOIN doc_bill ON ref_client.f_clientID = doc_bill.f_clientID INNER JOIN tab_bill_detail e ON doc_bill.f_billID = e.f_billID INNER JOIN tab_comlist ON e.f_billID = tab_comlist.f_billID INNER JOIN doc_comlist ON tab_comlist.f_comlistID = doc_comlist.f_comlistID WHERE doc_comlist.f_comlistID = 1) x GROUP BY x.f_npp UNION SELECT 'Стоимость без НДС по счету рассчитанная' as detail, '' as dim, '' AS f1, '' AS sal1, '' AS price1, SUM(CASE WHEN e.f_billID = 6 THEN e.f_summa ELSE NULL END) AS price_sal1, '' AS f2, '' AS sal2, '' AS price2, SUM(CASE WHEN e.f_billID = 3 THEN e.f_summa ELSE NULL END) AS price_sal2, '' AS f3, '' AS sal3, '' AS price3, SUM(CASE WHEN e.f_billID = 5 THEN e.f_summa ELSE NULL END) AS price_sal3 FROM ref_client INNER JOIN doc_bill ON ref_client.f_clientID = doc_bill.f_clientID INNER JOIN tab_bill_detail e ON doc_bill.f_billID = e.f_billID INNER JOIN tab_comlist ON e.f_billID = tab_comlist.f_billID INNER JOIN doc_comlist ON tab_comlist.f_comlistID = doc_comlist.f_comlistID WHERE doc_comlist.f_comlistID = 1 UNION SELECT 'Стоимость без НДС по совпадающим позициям' as detail, '' as dim, '' AS f1, '' AS sal1, '' AS price1, SUM(d.price_sal1) AS price_sal1, '' AS f2, '' AS sal2, '' AS price2, SUM(d.price_sal2) AS price_sal2, '' AS f3, '' AS sal3, '' AS price3, SUM(d.price_sal3) AS price_sal3 FROM (SELECT SUM(CASE WHEN e.f_billID = 6 THEN e.f_summa ELSE NULL END) AS price_sal1,SUM(CASE WHEN e.f_billID = 3 THEN e.f_summa ELSE NULL END) AS price_sal2,SUM(CASE WHEN e.f_billID = 5 THEN e.f_summa ELSE NULL END) AS price_sal3 FROM ref_client INNER JOIN doc_bill ON ref_client.f_clientID = doc_bill.f_clientID INNER JOIN tab_bill_detail e ON doc_bill.f_billID = e.f_billID INNER JOIN tab_comlist ON e.f_billID = tab_comlist.f_billID INNER JOIN doc_comlist ON tab_comlist.f_comlistID = doc_comlist.f_comlistID WHERE doc_comlist.f_comlistID = 1 AND e.f_summa <> 0 GROUP BY e.f_npp HAVING COUNT(1)>1) d
|
Я получил то что нужно. Только вот и со всеми 'null' строка выводится.
|