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

Откуда: Москва
Сообщений: 78
Ситуация такая: есть таблица1, при привязке таблицы2 появляются новые строки в результирующей таблице, так как в таблице2 несколько строк имеют один и тот же ключ.
А нужно из второй таблицы взять только одну строку с этим ключом (любую)

в упрощенном виде запрос такой
select SUM(table1.a), SUM (case when table2.a is null then 0 else table1.b end)
from table1 left outer join table2 ON table2.table1_id = table1.table1_id
group by table1.c

подставлять вместо table2 подзапрос нельзя, ибо делается это все в дурацком конструкторе, в котором таблицы выбираются из списка

заранее благодарен
6 май 13, 14:46    [14263117]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
select top 1 with ties t1.object_id, t2.name 
  from sys.objects t1
    left join sys.columns t2
      on t1.object_id = t2.object_id
order by row_number() over (  partition by t1.object_id order by t2.name )
6 май 13, 14:59    [14263224]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
Создать view
create view v_table2
as
select top (1) with ties
 table1_id, field1, ..., filedN
from
 table2
order by
 row_number() over (partition table1_id order by table1_id);
И использовать вместо таблицы.
6 май 13, 15:01    [14263241]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
iiyama
Member

Откуда:
Сообщений: 642
select *
from table1 T1
outer apply
(
select top 1 * from table2 T2 where T2.table1_id = T1.table1_id order by T2.table2_id
)OA
6 май 13, 15:03    [14263262]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
Tdmitry
Member

Откуда: Москва
Сообщений: 78
invm, спасибо, но этот вариант не подходит. ибо таблицы для выборки приходится выбирать из списка готовых таблиц
6 май 13, 15:06    [14263279]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
Tdmitry,

CTE тоже нельзя?
6 май 13, 15:13    [14263340]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
Tdmitry
Member

Откуда: Москва
Сообщений: 78
invm, да.
строку
from table1 left outer join table2
никак не поменять, ничего сюда не вставить.

Вот прописать бы в WHERE что-нибудь или в ON.
Пусть это будет нерационально, лишь бы работало

Остальные ответы щас попробую понять, но чувствую, тоже не смогу реализовать в конструкторе
6 май 13, 15:22    [14263420]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
Tdmitry
Вот прописать бы в WHERE что-нибудь или в ON.
Пусть это будет нерационально, лишь бы работало
select SUM(table1.a), SUM (case when table2.a is null then 0 else table1.b end)
from table1 left outer join table2 ON table2.table1_id = table1.table1_id
where
 table2.table2_id is null or table2.table2_id = (select top (1) t2.table2_id from table2 t2 where t2.table1_id = table1.table1_id)
group by table1.c
6 май 13, 15:36    [14263518]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выбрать уникальные значения столбца  [new]
Tdmitry
Member

Откуда: Москва
Сообщений: 78
invm, спасибо! то, что надо)
6 май 13, 16:37    [14263960]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить