Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sql запрос перестал работать  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Есть текст SQL-запроса:
declare @periodstart int
select @periodstart = 4000105

declare @periodstop int
select @periodstop = 4000118

select 
per.code "Code месяца",
per.name "Месяц",
case
 when cm.TYPECODE = 1 and day(b.STARTDATE)<>1 then 'Доначисления по договорной величине'
 when cm.TYPECODE = 1 and day(b.STARTDATE)=1 then 'Чисто договорная величина' 
 when cm.typecode is null and b.LSTCNTRLMSRMNTCD is not null then 'Корректировка потребления'
 else 'Счет по показаниям'
end "Группа",
count(b.code) "Кол-во счетов",
sum(b.CONSUMPTION) "Потребление",
sum(b.TOPAYAFTERCRRCTN) "Сумма к оплате"

from 
CURRENTPERIOD cp 
join period per on (cp.PERIODCODE = per.code)
join bill b on (b.PERIODREFCODE = cp.code)  
join billtype bt on (b.billtypecode = bt.code) 
left join CONTROLMEASURMNT cm on (b.LSTCNTRLMSRMNTCD = cm.code)

where 
cp.PERIODCODE >= @periodstart
and cp.PERIODCODE <= @periodstop
and b.INVSTATUSCODE <> 2 

group by 
per.code ,
per.name,
case
 when cm.TYPECODE = 1 and day(b.STARTDATE)<>1 then 'Доначисления по договорной величине'
 when cm.TYPECODE = 1 and day(b.STARTDATE)=1 then 'Чисто договорная величина' 
 when cm.typecode is null then 'Корректировка потребления'
 else 'Счет по показаниям'
end
order by 5,4


Ранее он выполнялся, правда на другом сервере была БД. Сейчас на этой же базе, которую подняли на другом сервере он не выполняется. Картинка с другого сайта.

Вот такая ошибка:
Сообщение 8120, уровень 16, состояние 1, строка 11
Столбец "CONTROLMEASURMNT.TYPECODE" недопустим в списке выбора, поскольку он не содержится ни в агрегатной  функции, ни в предложении GROUP BY.
Сообщение 8120, уровень 16, состояние 1, строка 11
Столбец "bill.STARTDATE" недопустим в списке выбора, поскольку он не содержится ни в агрегатной  функции, ни в предложении GROUP BY.
Сообщение 8120, уровень 16, состояние 1, строка 12
Столбец "CONTROLMEASURMNT.TYPECODE" недопустим в списке выбора, поскольку он не содержится ни в агрегатной  функции, ни в предложении GROUP BY.
Сообщение 8120, уровень 16, состояние 1, строка 12
Столбец "bill.STARTDATE" недопустим в списке выбора, поскольку он не содержится ни в агрегатной  функции, ни в предложении GROUP BY.
Сообщение 8120, уровень 16, состояние 1, строка 13
Столбец "CONTROLMEASURMNT.TYPECODE" недопустим в списке выбора, поскольку он не содержится ни в агрегатной  функции, ни в предложении GROUP BY.
Сообщение 8120, уровень 16, состояние 1, строка 13
Столбец "bill.LSTCNTRLMSRMNTCD" недопустим в списке выбора, поскольку он не содержится ни в агрегатной  функции, ни в предложении GROUP BY.


Почему перестала работать такая конструкция запроса? Может кто-то дать совет?
13 июн 12, 18:21    [12709893]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос перестал работать  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
наверно, потому что кто-то дописал в case из селект-листа:

and b.LSTCNTRLMSRMNTCD is not null

а в group by - забыл.
13 июн 12, 18:28    [12709914]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос перестал работать  [new]
aleks2
Guest
select
  "Code месяца",
  "Месяц",
  "Группа",
  count(b.code) "Кол-во счетов",
  sum(b.CONSUMPTION) "Потребление",
  sum(b.TOPAYAFTERCRRCTN) "Сумма к оплате"
from 
(
select 
per.code "Code месяца",
per.name "Месяц",
case
 when cm.TYPECODE = 1 and day(b.STARTDATE)<>1 then 'Доначисления по договорной величине'
 when cm.TYPECODE = 1 and day(b.STARTDATE)=1 then 'Чисто договорная величина' 
 when cm.typecode is null and b.LSTCNTRLMSRMNTCD is not null then 'Корректировка потребления'
 else 'Счет по показаниям'
end "Группа",
b.code,
b.CONSUMPTION,
b.TOPAYAFTERCRRCTN

from 
CURRENTPERIOD cp 
join period per on (cp.PERIODCODE = per.code)
join bill b on (b.PERIODREFCODE = cp.code)  
join billtype bt on (b.billtypecode = bt.code) 
left join CONTROLMEASURMNT cm on (b.LSTCNTRLMSRMNTCD = cm.code)

where 
cp.PERIODCODE >= @periodstart
and cp.PERIODCODE <= @periodstop
and b.INVSTATUSCODE <> 2 
) X
group by 
"Code месяца",
"Месяц",
"Группа"
order by 5,4
13 июн 12, 18:31    [12709932]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос перестал работать  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
daw
наверно, потому что кто-то дописал в case из селект-листа:

and b.LSTCNTRLMSRMNTCD is not null

а в group by - забыл.

заработало Картинка с другого сайта.
13 июн 12, 18:33    [12709945]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос перестал работать  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
aleks2,

понял, спб!
13 июн 12, 18:35    [12709956]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос перестал работать  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Vad72
daw
наверно, потому что кто-то дописал в case из селект-листа:

and b.LSTCNTRLMSRMNTCD is not null

а в group by - забыл.

заработало Картинка с другого сайта.


важно отметить для будущих поколений, которые будут читать этот форум, что

1. перестало работать - само(!!)
2. заработало - снова само(!!)

13 июн 12, 19:00    [12710103]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос перестал работать  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Winnipuh
Vad72
пропущено...

заработало Картинка с другого сайта.


важно отметить для будущих поколений, которые будут читать этот форум, что

1. перестало работать - само(!!)
2. заработало - снова само(!!)


не , я не писал, что само Картинка с другого сайта.

Как я понимаю, когда я последний раз выполнял этот запрос (на другой машине), то я не нажал кнопку сохранить.
По другому не могу объяснить.
14 июн 12, 09:37    [12711536]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить