orv писал(а) 18. Декабря 2008 :: 05:45: |
|SELECT
| Док.IDDoc as [ТекДокумент $Документ.Реализация],
| CASE
| WHEN $Док.Контрагент IN (SELECT Val FROM #ГруппаС)
| THEN 1
| ELSE 2
| END as [Вид_Док $Строка],
| $ДокС.Номенклатура as [Номенклатура $Справочник.Номенклатура],
| SUM($ДокС.Сумма) as [Сумма $Число],
| SUM($ДокС.Количество) as [Количество $Число],
| SUM($ДокС.СуммаНДС) as [СуммаНДС $Число]
|FROM
| $ДокументСтроки.Реализация as ДокС
|INNER JOIN
| $Документ.Реализация as Док
| ON (Док.IDDoc = ДокС.IDDoc)
| AND ($Док.ВидДеятельности = :ВидДеятельностиОпт)
|INNER JOIN
| _1SJourn as Жур ON (Жур.IDDoc = ДокС.IDDoc) AND
| (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) AND
| (Жур.Closed & 1 = 1)
|
|
|GROUP BY
|
|Док.IDDoc,
| CASE
| WHEN $Док.Контрагент IN (SELECT Val FROM #ГруппаС)
| THEN 1
| ELSE 2
| END,
|$ДокС.Номенклатура
|
|ORDER BY
|
|Док.IDDoc
|
|";
СписокДиллеров = СоздатьОбъект("СписокЗначений");
СписокДиллеров.ДобавитьЗначение(ГрСубдилеров.ТекущийЭлемент());
//
РеалОпт = СоздатьОбъект("ТаблицаЗначений");ВозвОпт = СоздатьОбъект("ТаблицаЗначений");
//
ЗапросSQL.УстановитьТекстовыйПараметр("НачДата" , ВыбНачПериода);
ЗапросSQL.УстановитьТекстовыйПараметр("КонДата" , ВыбКонПериода);
ЗапросSQL.УложитьСписокОбъектов(СписокДиллеров,"#ГруппаС","Контрагенты" );
ЗапросSQL.УстановитьТекстовыйПараметр("ВидДеятельностиОпт" , ВидДеятельностиОпт);
C:\USERS\BASE\REDUTCOMPL\EXTFORMS\ОТЧЕТОРАБОТЕСЕРВИСА2.ERT(616)}: State 42000, native 8120, message [Microsoft][ODBC SQL Server Driver][SQL Server]Столбец "dh1611.SP1583" недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY
Не могу понять почему ругается на поле CASE если CASE убрать работает нормально. В кейс-е не работает именно часть связанная с проверкой по группе справочника, если если не спрашивать через механизм IN то вообще нормально работает?? видел на ветке косяк с поиском работе с группой справочника там тоже ответа нет? че делать ? разработчики помогите
надо спрятать внутренний select в другой и его группировать
что-то типа : ( при этом типизацию делай только во внешнем select )
select a1,a2,a3,sum(s1),sum(s2),sum(s3) from
(
select x1 as a1,x2 as a2,x3 as a3,
res1 as s1, res2 as s2, res3 as s3 from tabl_000
) as tabl1
group by a1,a2,a3
order by a1