Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MSSQL2005] выбрать одно значение из таблицы 
:(
    Опции темы
MishaMW
Дата 15.8.2008, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 31.5.2007
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Есть таблица

IDObj    Account    Obj
15925    1                obj1
15917    2                obj2
18814    3                gayka
14814    3                bolt
18815    4                gayka
14815    4                gayka
18817    5                bolt
14817    5                bolt

Нужно выбрать по одной записи для каждого Account, причем в парах приоритет за Obj=bolt
PM MAIL Skype   Вверх
aleksh
Дата 15.8.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: нет
Всего: 13



так вроде было уже...
PM MAIL   Вверх
MishaMW
Дата 15.8.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 31.5.2007
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Тут не было
PM MAIL Skype   Вверх
Magnifico
Дата 15.8.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 4
Всего: 17



Код

select max(IDObj ),  Account ,   Obj
from table
whrere Obj= 'bolt'
group by Account ,   Obj


Цитата

 причем в парах приоритет за Obj=bolt

довольно тяжело понять смысл этой фразы!


--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
MishaMW
Дата 17.8.2008, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 31.5.2007
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата(Magnifico @  15.8.2008,  14:59 Найти цитируемый пост)
довольно тяжело понять смысл этой фразы! 


Для каждого Account может существовать больше одной записи. В этом случае выбирается запись где Obj= 'bolt'. 
Если же записей где Obj= 'bolt' в рамках одного Account окажется больше одной, то выбирается любая из них, если ниодной -  вообще любая.

другими словами, из приведенного набора данных должно получиться следующее

IDObj    Account    Obj
15925    1                obj1
15917    2                obj2
14814    3                bolt
18815    4                gayka
18817    5                bolt
PM MAIL Skype   Вверх
Magnifico
Дата 17.8.2008, 18:25 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 4
Всего: 17



Код

create table #t
(
IDObj int,
Account  int,
Obj nvarchar(25)
)
--------------------------
insert #t
select 15925,  1 , 'obj1' union all
select 15917 ,   2 ,  'obj2' union all
select 18814 ,   3 ,   'gayka' union all
select 14814 ,   3  ,  'bolt' union all
select 18815 ,   4  ,  'gayka' union all
select 14815 ,   4  ,  'gayka' union all
select 18817 ,   5 ,   'bolt' union all
select 14817 ,   5 ,   'bolt' 
------------------------------------
select max(IDObj), account ,Obj
from
(
    select distinct coalesce(t2.IDObj,t1.IDObj) as IDObj,coalesce(t2.account,t1.account) as account ,
    coalesce(t2.Obj,t1.Obj)as Obj
    from #t t1

left join
    (
    select *
    from #t 
    where obj ='bolt'
    ) as t2
on t1.account =t2.account
) as q
group by account ,Obj
order by account




--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.