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

Откуда:
Сообщений: 5
Привет всем,

Нужна помощь в написании запроса.
У меня есть таблица csv которую я загружаю на базу.
Таблица хранит данные клиента.
Клиенту полагаются деньги и он их может получить если хотя бы один id по которому видится поиск
Равняться id который находится в базе.
По правилам я должен найти клиента по id3, после чего я начинаю искать сколько ему пологается.
Если не нахожу клиента по id3 я перехожу на id2, но если id3 + id2 находятся на одной строке
То сумма выплата их общая.
Если я не нахожу по id3 и id2 я перехожу на id1, но по этому id1 должен сидеть только один клиент в базе.

Я пытался писать и case и if exists нечего не помогает....:(

Я загрузил таблицу.

Спасибо всем за ранние за ответы!

К сообщению приложен файл (test.csv - 1Kb) cкачать
6 авг 16, 10:04    [19509001]     Ответить | Цитировать Сообщить модератору
 Re: запрос с условной конструкцией  [new]
aleks2
Guest
Думать не пытался? Говорят, помогает.

with
  id3s as  ( select * from [есть таблица csv которую я загружаю на базу] as t
                            where exists( select * from [id который находится в базе] as x where x.id = t.id3) 
              )

, id2s as  ( select * from [есть таблица csv которую я загружаю на базу] as t
                            where exists( select * from [id который находится в базе] as x where x.id = t.id2) 
                                      and not exists ( select * from id3s where id3s.id3 = t. id3)
              )
, id1s as  ( select * from [есть таблица csv которую я загружаю на базу] as t
                            where exists( select * from [id который находится в базе] as x where x.id = t.id1) 
                                      and  not exists ( select * from id3s where id3s.id3 = t. id3)
                                      and  not exists ( select * from id2s where id2s.id2 = t. id2)
                                      --  но по этому id1 должен сидеть только один клиент в базе.
                                      and ( select count(*) from [id который находится в базе] as tt  where tt.id = t.id ) = 1
              )
select * from id3s
union all
select * from id2s
union all
select * from id1s
6 авг 16, 13:12    [19509432]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить