У меня есть запрос с условной группой, мне просто интересно, есть ли способ иметь оператор выбора с этим условием мой запрос
select sum(totalamount),typetitle,
from #temp group by (case when Type ='1' then typetitle else Type end)
с этим запросом я получаю ошибку при вводе текста, поскольку он не находится в группе по инструкции, есть ли какое-либо решение для этого?
Тр, как показано ниже
select sum(totalamount),
(case when Type ='1' then typetitle else Type end)
from #temp
group by (case when Type =1 then typetitle else Type end)
В группе по проекции имя столбца и группа по столбцу должны совпадать.
@Ironsun - это тип и название одного и того же типа данных?
@ZaynulAbadinTuhin нет типа int, а другой - строка, но я могу преобразовать ту же ошибку
@Ironsun dbfiddle.uk/… вот аналогичный пример, хотя образцы данных отличаются, не могли бы вы проверить этот
@ZaynulAbadinTuhin работает, но я не получаю записи для других условий, например type = 2 и т. д., Как я могу включить эти записи в этот запрос?
@Ironsun участвует в скрипке, где не работали, потому что без образца сложно сказать, почему не работает
Если вы не хотите повторять выражение, то apply
- это один из способов:
select v.typegroup, sum(v.totalamount),
from #temp t cross apply
(values (case when Type ='1' then typetitle else Type end)
) v(typegroup)
group by v.typegroup;
Только когда
Type
иTypetitle
имеют совместимые типы данных.