Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Запрос / 7 сообщений из 7, страница 1 из 1
25.03.2013, 12:33
    #38197155
vital_vital
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Добрый день.

Помогите сообразить как написать запрос.

sql server 2005

Есть выборка

1
2
3
null
4

Если есть хотя бы одно значение null, то возвращать null, в противном случае возвращать max - в данном случае 4.
...
Рейтинг: 0 / 0
25.03.2013, 13:05
    #38197213
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
например, так:
Код: sql
1.
2.
3.
4.
5.
6.
select
case
  when count(F)<>count(*) then null
  else max(F)
end
from ...
...
Рейтинг: 0 / 0
25.03.2013, 16:58
    #38197620
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Как вариант - order by case ... desc чтобы NULL был старше 4, ну собственно первую насортированную запись и вернуть
...
Рейтинг: 0 / 0
29.03.2013, 22:35
    #38205106
vital_vital
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
всем спасибо, помогли
...
Рейтинг: 0 / 0
29.03.2013, 23:46
    #38205166
vital_vital
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
поспешил с благодарностями))

обрисую более полно ситуацию

есть таблицы document, documentItem, documentCorrect

document id, date, subject
documentItem id, documentId, subject
documentCorrect id, documentItemId, date

У документа есть один, ни одного или несколько элементов, а у каждого элемента есть одна, ни одной или несколько корректировок.
Нужно получить вместе с документами дату последней корректировки, но если у хотя бы одного элемента нет корректировок, возвращать null для даты корректировки.

Необходимо получить список документов с датой корректировки.

select d.id, d.date, d.subject, ??дата корректировки?? from document as d
...
Рейтинг: 0 / 0
30.03.2013, 01:17
    #38205208
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Код: sql
1.
2.
3.
4.
5.
6.
select d.id, d.date, d.subject, 
max( dc.date )
from document as d
inner join documentItem as di on di.documentId = d.id
left join documentCorrect as dc on dc.documentItemId = di.id
group by d.id, d.date, d.subject
...
Рейтинг: 0 / 0
30.03.2013, 01:24
    #38205215
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
хотя, не, я кажется неправильно понял задачу)
тупое решение - вместо max( dc.date )
Код: sql
1.
case when max( IsNull( dc.date, '01/01/9999' ) ) = '01/01/9999' then null else max( dc.date  ) end 
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Запрос / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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