Здравствуйте…
Мне надо выяснить единственное ли вхождение некоторой записи (т.е. равно ли count(*) единице по этой записи) в некоторой выборке…
Я пишу:
if 1= (select count(*) from a inner join b on a.id=b.id
where a_id=@id and
(year(reg_date)
group by year(reg_date), month(reg_date))
он пишет ошибку:
Server: Msg 512, Level 16,
(
Read more... )
Comments 20
(The comment has been removed)
до этого был такой вид:
и все работало правильно...
разница лишь в том, что параметр @enddate типа datetime заменен на два параметра типа varchar для обозначения года и месяца отдельно...
почему не работает то же самое, но с извлечением года и месяца из datetime
if 1= (select count(*) from a inner join b on a.extract_id=b.id
where a.claim_id=@id
and (year(reg_date)’<’cast(@year as int) or (year(reg_date)=cast(@year as int) and month(reg_date)
‘<’=cast(@month as int)))
group by year(reg_date), month(reg_date))
Reply
Reply
Reply
Reply
Reply
до этого был такой вид:
и все работало правильно...
разница лишь в том, что параметр @enddate типа datetime заменен на два параметра типа varchar для обозначения года и месяца отдельно...
почему не работает то же самое, но с извлечением года и месяца из datetime
if 1= (select count(*) from a inner join b on a.extract_id=b.id
where a.claim_id=@id
and (year(reg_date)’<’cast(@year as int) or (year(reg_date)=cast(@year as int) and month(reg_date)
‘<’=cast(@month as int)))
group by year(reg_date), month(reg_date))
Reply
Я не умею решать задачи на уровне "А и Б сидели на трубе. Сколько лет водителю автобуса?"
Если вы сформулируете бизнес-задачу, опишете имеющиеся структуры данных и версию СУБД, то я напишу вам запрос.
Reply
может, я действительно не понимаю что он делает...
@id - это знаечние из курсора
данная строчке пишется в цикле курсора...
в моем понимании он суммирует все записи в двух таблицах, объединенных полем id,
при заданных условиях,
причем он должен в отдельности проссумировать все записи по каждому месяцу каждого года
мне надо вынуть записи по заданному полю id, которые вообще встречаются один раз... никогда их не было
записи выбираю из таблиц
tp_extract2claim и
ts_reg_report
соединенных следующим образом: tp_extract2claim.extract_id=ts_reg_report.id
в условиях должно быть:
1. tp_extract2claim.claim_id=@id
2. поле reg_date - дата вхождения записи
@enddate - параметр ханимой процедуры, дата типа datetime
надо учесть все даты, идущие ранее @enddate
суммирование должно быть для каждого месяца
Reply
group by year(reg_date), month(reg_date))
в частности month(reg_date))
Reply
и все работало правильно...
разница лишь в том, что параметр @enddate типа datetime заменен на два параметра типа varchar для обозначения года и месяца отдельно...
почему не работает то же самое, но с извлечением года и месяца из datetime
if 1= (select count(*) from a inner join b on a.extract_id=b.id
where a.claim_id=@id
and (year(reg_date)’<’cast(@year as int) or (year(reg_date)=cast(@year as int) and month(reg_date)
‘<’=cast(@month as int)))
group by year(reg_date), month(reg_date))
Reply
у меня в предыдущем отчете был только один месяц, а здесь все...
и я еще спрашиваю, а что это у меня :((((((((
Reply
Leave a comment