powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подзапрос в агрегатной функции
5 сообщений из 5, страница 1 из 1
Подзапрос в агрегатной функции
    #40072993
minva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вот запрос

Код: sql
1.
2.
3.
4.
5.
6.
@BankPaymentType varchar(1000) = '10,11,12'

select AfsID, Sum(Case when F.PaymentType in (0, -2, -3) then F.Cost else 0 end) as SugCash,
              Sum(Case when F.PaymentType in (select number from dbo.UDF_INTLIST_TO_TABLE(@BankPaymentType, ',')) then F.Cost else 0 end) as SugBank,
              Sum(Case when not F.PaymentType in (1, 2, 3) F.Cost else 0 end) as SugCashless
from ...



UDF_INTLIST_TO_TABLE возвращает таблицу из одного столбца содержащего числа из переменной @BankPaymentType

Эта конструкция не заработала с ошибкой
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

Как перезаписать запрос, при условии, что значение переменной передается из программы и заранее неизвестно
Формат содержимого переменной можно изменить, главное, чтоб числа остались :)
Спасибо
...
Рейтинг: 0 / 0
Подзапрос в агрегатной функции
    #40073000
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
minva,

на крайняк, всегда можно сделать так
Код: sql
1.
Sum(Case when ','+@BankPaymentType+',' like '%,'+cast(F.PaymentType as varchar)+',%' then F.Cost else 0 end) as SugBank
...
Рейтинг: 0 / 0
Подзапрос в агрегатной функции
    #40073002
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
minva,

так может быть сделать джоин с этой ф-ией сначала и условие брать из её данных?
...
Рейтинг: 0 / 0
Подзапрос в агрегатной функции
    #40073015
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как то так, примерно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
@BankPaymentType varchar(1000) = '10,11,12'

select AfsID, Sum(Case when F.PaymentType in (0, -2, -3) then F.Cost else 0 end) as SugCash,
              Sum(Case when t.yes = 1 then F.Cost else 0 end) as SugBank,
              Sum(Case when not F.PaymentType in (1, 2, 3) F.Cost else 0 end) as SugCashless
from F
	Outer apply (Select distinct 1 yes from dbo.UDF_INTLIST_TO_TABLE(@BankPaymentType, ',') udf
						Where F.PaymentType = udf.number) t
...
Рейтинг: 0 / 0
Подзапрос в агрегатной функции
    #40073021
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, надо кофе попить, пишу дичь.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подзапрос в агрегатной функции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]