OriginalGriff
Прочтите сообщение об ошибке:
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Это довольно ясно.
Один или несколько ваших подзапросов возвращают более одного столбца. В частности, это:
case TT when 'BTOS'
then (SELECT DATEADD(WEEK,DATEDIFF(week,0,R_DATE),0)as Date,
COUNT(*)as "OSCount" ,sum(amount) as "Gross OS",SUM(fee_amount) as "OS Fee",SUM(amount)-SUM(fee_amount) as "NetOS"
возвращает несколько столбцов в то, что SQL считает одним столбцом. Ты не можешь этого сделать.
И весь этот запрос Странный: вы, кажется, пытаетесь вернуть разные столбцы в зависимости от содержимого строки, и это просто глупо: если строка содержит "BTOS", то верните столбец с именем OSCount, в противном случае верните другой столбец с именем "RCount"?
Я не уверен, какую проблему вы пытаетесь решить здесь, но это определенно не тот способ сделать это.
Member 13400047
Спасибо за Ваш быстрый поворот, я пытаюсь вернуть сумму и количество различных столбцов в зависимости от содержимого строки и группы по еженедельным данным. Этот запрос возвращает данные, как и ожидалось, но проблема заключается в том, что первый оператор select каждой недели показывает все результаты второго оператора select.Я ожидаю, что если строка содержит "BTOS" , то верните эти выбранные столбцы, если строка содержит"BR", то верните выбранные столбцы суммируйте суммы за каждую неделю данных и группируйте по каждой неделе
выберите * из
(Выберите функция dateadd(неделя,функция datediff(неделя,0,R_DATE),0) как дата,
COUNT (*) как " OSCount"
, сумма (сумма) как "валовая ОС"
, SUM (fee_amount) as "плата за ОС"
,SUM(amount) - сумма (fee_amount) как " чистая ОС"
От [TVDEV]. [dbo].[РНН]как АТ1, где ТТ='BTOS и группа R_STATUS='R' на функция dateadd(неделя,функция datediff(неделя,0,R_DATE),0)) как ОС,
(ВЫБИРАТЬ
DATEADD(WEEK, DATEDIFF(week, 0, R_DATE), 0) как rdate,
COUNT (*) как "RCount"
,SUM(amount) - сумма (fee_amount) как "R"
От [tvDEV]. [dbo].[РНН]как АТ2 где TT='БР' и группа R_STATUS='R' на функция dateadd(неделя,функция datediff(неделя,0,R_DATE),0)) как оборот