Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ТЗ.Свернуть() только языком SQL (число прочтений - 2051 )
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
ТЗ.Свернуть() только языком SQL
28. Марта 2008 :: 09:33
Печать  
Подскажите как "свернуть" Результат запроса, но еще не в таблице, а языком SQL. Вот запрос:
Код
Выбрать все
	ТекстЗапроса="
	|SELECT
	|	Партии.IDDOC					[Документ $Документ.ZОтчет]
	|	,$Партии.Склад				[Склад $Справочник.Склады]
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 0 THEN SUM($Партии.СуммаПродажиРуб)
	|	 ELSE 0 END AS СуммаНДС0
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 10 THEN SUM($Партии.СуммаПродажиРуб)
	|	 ELSE 0 END AS СуммаНДС10
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 18 THEN SUM($Партии.СуммаПродажиРуб)
	|	 ELSE 0 END AS СуммаНДС18
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 20 THEN SUM($Партии.СуммаПродажиРуб)
	|	 ELSE 0 END AS СуммаНДС20
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 0 THEN SUM($Партии.СуммаНДСПродажи)
	|	 ELSE 0 END AS НДС0
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 10 THEN SUM($Партии.СуммаНДСПродажи)
	|	 ELSE 0 END AS НДС10
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 18 THEN SUM($Партии.СуммаНДСПродажи)
	|	 ELSE 0 END AS НДС18
	|	,CASE $СтавкиНДС.Ставка
	|		WHEN 20 THEN SUM($Партии.СуммаНДСПродажи)
	|	 ELSE 0 END AS НДС20
	|FROM
	|	$Регистр.ПартииТоваров AS Партии
	|INNER JOIN
	|	_1SJourn AS Журнал  ON Партии.IDDOC=Журнал.IDDOC
	|	AND Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
	|INNER JOIN
	|	$Справочник.Номенклатура AS Товар ON Товар.ID=$Партии.Товар
	|INNER JOIN
	|	$Справочник.СтавкиНДС AS СтавкиНДС ON .Date_Time_IDDoc, 8) as DateTime))
	|INNER JOIN
	|	$Справочник.Склады AS Склад ON $Партии.Склад=Склад.ID
	|WHERE
	|	$Партии.КодОперации Collate Cyrillic_General_CS_AS = 'п'
	|GROUP BY
	|	Журнал.Date_Time_IDDoc
	|	,Партии.IDDOC
	|	,$Партии.Склад
	|	,$СтавкиНДС.Ставка
	|ORDER BY
	|	Журнал.Date_Time_IDDoc
	|";
 


Т.е. Есть группировка по СтавкеНДС, для того, что бы подсчитать суммы НДС по разным ставкам, следовательно и таблица, выходит на один документ несколько строк - по разным ставкам. Как свернуть вывод на стадии выполнения?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: ТЗ.Свернуть() только языком SQL
Ответ #1 - 28. Марта 2008 :: 09:44
Печать  
Не групировать по ставке НДС, а SUM вынести за CASE
  
Наверх
ICQ  
IP записан
 
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
Re: ТЗ.Свернуть() только языком SQL
Ответ #2 - 28. Марта 2008 :: 09:55
Печать  
Так ежели не группировать, то он и не считает по разным ставкам сумму...

или наглядно покажи как...
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: ТЗ.Свернуть() только языком SQL
Ответ #3 - 28. Марта 2008 :: 10:04
Печать  
Код
Выбрать все
|	,SUM(CASE $СтавкиНДС.Ставка
|		WHEN 20 THEN $Партии.СуммаНДСПродажи
|	 ELSE 0 END) AS НДС20

 

  
Наверх
ICQ  
IP записан
 
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
Re: ТЗ.Свернуть() только языком SQL
Ответ #4 - 28. Марта 2008 :: 10:18
Печать  
Спасиб. То что надо. Эх, когда нить и я так научусь  Класс
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать