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

Откуда: Раменское
Сообщений: 52
Ребят! Не знаю как написать вопрос. В общем, есть определенный документ, если присутствует в выборке то выбираем его наименование, дату создания и т.д., ну а если нет данного документа, то выводит "-".

Например

Есть есть документ с наименованием 'изумрудный', то

Наименование Дата создания Дата регистрации
Изумрудный 21.12.2012 25.12.2012


ну а если его нет, то
Наименование Дата создания Дата регистрации
- - -


Пытался сделать case, не получается, он либо находит, либо выдаёт строки пустыми
9 янв 13, 15:38    [13742067]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
Mitresky
Member

Откуда: Раменское
Сообщений: 52
блин, убрал пробелы. В общем, в каждом столбце будет стоять " - "
9 янв 13, 15:41    [13742087]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Mitresky,

А что не так с case?
case when len(a) = 0 or a is null then '-' else a end ...
9 янв 13, 16:02    [13742260]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
Mitresky
Member

Откуда: Раменское
Сообщений: 52
SomewhereSomehow
Mitresky,

А что не так с case?
case when len(a) = 0 or a is null then '-' else a end ...



Тогда мне к "а" нужно присвоить "изумрудный" или что ты имеешь ввиду под "а"??
9 янв 13, 16:51    [13742704]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
aleks2
Guest
;with
myselect as (
select Наименование, [Дата создания], [Дата регистрации] from Таблица where Наименование like '%изумрудный%'
)
select * from myselect
union all
select '-', '-', '-' where not exists(select * from myselect);
9 янв 13, 17:34    [13743029]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
Mitresky
Member

Откуда: Раменское
Сообщений: 52
Или можно сделать так, если type_doc = 'Изумрудный' тогда выполняется 1 запрос, если не равен, то выполняется второй запрос? Схематично это будет как выглядеть?
9 янв 13, 17:34    [13743030]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Mitresky
Или можно сделать так, если type_doc = 'Изумрудный' тогда выполняется 1 запрос, если не равен, то выполняется второй запрос? Схематично это будет как выглядеть?


Ну тот же case.
...case when type_doc = 'Изумрудный' then select top (1) что-то from что-то else что-то end

Вы вопрос яснее сформулируйте. Выкладывайте сюда запрос который не получился.
9 янв 13, 21:17    [13743793]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
не гоняй
Guest
Mitresky,

select *
from doctype
left join doc

оно же

select *
from (select 'изумрудный' as doctype) dt
left join doc

оно же

select top 1
(
select 1, *
from doc
where 'изумрудный'
union all
select 2, '-', '-'
) order by 1

если же черточки нужны если просто, что называется, "тупо" ничего не нашлось и это не имеется ввиду left join как в двух верхних вариантах, то не надо возвращать ничего. идешь в тот отчет или формочку и если пришел пустой датасет рисуешь пустую строку. гонять бред пита по сети не нужно.
9 янв 13, 22:00    [13743983]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос  [new]
Mitresky
Member

Откуда: Раменское
Сообщений: 52
aleks2
;with
myselect as (
select Наименование, [Дата создания], [Дата регистрации] from Таблица where Наименование like '%изумрудный%'
)
select * from myselect
union all
select '-', '-', '-' where not exists(select * from myselect);



Спасибо!
10 янв 13, 10:30    [13745353]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить