Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сумма по выбранным SELECTом записям, Надо получить сумму по выбранным записям 
V
    Опции темы
loshko
Дата 25.9.2014, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.9.2014

Репутация: нет
Всего: нет



Есть запрос, который выбирает записи с одинаковым f_npp.
Код

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
AND e.f_summa <> 0
GROUP BY e.f_npp
HAVING COUNT(1) > 1

Получаю результат:
detail dim f1 sal1 price1 price sal1 f2 sal2 price2 price sal2 f3 sal3 price3 price sal3 
Стоим                             8170                                                                 8000 
Стоим                            9169,81                                                             9169,81 
Стоим                              556,95                                                               222,78 
Стоим                            5955,28                                                             5955,28 
Стоим                              232,94                                                               232,93 

Как получить суммы по полям price sal1,price sal2,price sal3 без рядовых строк?

Взлетело! Вот так:
Код

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

Получаю строку сумм:
detail dim f1 sal1 price1 price sal1 f2 sal2 price2 price sal2 f3 sal3 price3 price sal3 
Стоим                          24084,98                        null                            23580,80 


Это сообщение отредактировал(а) loshko - 25.9.2014, 14:37
PM MAIL   Вверх
Akina
Дата 25.9.2014, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Код

GROUP BY ... WITH ROLLUP



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
loshko
Дата 26.9.2014, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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' строка выводится.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.