![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Progis |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 15.7.2008 Репутация: нет Всего: нет |
Надо сделать выборку строк с повторяюшимися именами но разными датами.. Предположим в таблице 8 записей, 5 из них имеют одинаковые поля фамилия FIO, имя IMA, отчество OTCH,
пол POL и дата рождения DATR, но разные коды CODE_MO сначала надо выбрать их, потом среди этих записей надо выбрать только те у которых поля начальная дата DATN и конечная дата DATO скрещиваются, тоесть у них есть общий хоть один день .. Вот сам запрос: select p.Person_ID,p.NS,p.VS,p.DATS,p.DATPS,p.CODE_MO,p.PL_OGRN,p.KSO,p.SN,p.FIO,p.IMA,p.OTCH, p.POL,p.KAT,p.SNILS,p.SPS,p.SPN,p.PAS,p.PAN, p.DATR,p.KSMO,p.TSMO,p.ISMO,p.STRANA,p.ADR,p.MRAB,p.NAPR_MO,p.ISTI,p.DATN,p.DATO,p.ISHL, p.ISHOB,p.MP,p.FIOS, p.IS_VNESH,p.NAPR_N,p.NAPR_D,p.SUMMA_I,p.PV,p.DVOZVRAT,s.TITLE,l.NAME,pa.TITLE from temp_Person p left join SMO s on s.OGRN = p.PL_OGRN left join LPU_FULL l on l.OMS_CODE = p.CODE_MO left join PAYER pa on pa.OMS_CODE = p.CODE_MO where /* здесь предпологается поставить условие на вышеперечисленную выборку*/ //--------------------------------------- думаю этот запрос проще для восприятия хотя суть одна (с ним легче приводить примеры решения вопроса ![]() select FIO, IMA, OTCH,POL,DATR,CODE_MO, DATN, DATO from temp_Person where /* что написать в условии? */ //---------------------------------------- Если кто сможет помоч в решении этого вопроса буду очень благодарен. |
|||
|
||||
Zioma |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 22.8.2007 Репутация: 5 Всего: 5 |
Делаешь подзапрос с group by по полям "фамилия FIO, имя IMA, отчество OTCH, пол POL и дата рождения DATR" и having count(*)>1. Таким образом у тебя будет список записей где "одинаковые поля фамилия FIO, имя IMA, отчество OTCH,пол POL и дата рождения DATR, но разные коды CODE_MO".
А дальше связываешь с основным запросом и ставишь необходимые условия. |
|||
|
||||
Progis |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 15.7.2008 Репутация: нет Всего: нет |
я рассматривал такой вариант, он не подходит =( при группировке (group by) для выборке по счетчику( having count(*)>1 ) необходимо указывать те же поля что и в select'е. а в этом случае это недопустимо + даже если и умудрится это реализовать все равно коды (CODE_MO) будут одинаковыми.
Я решил проблему с помощью такого варианта: - джойним (left join ) таблицу саму к себе(разумеется с разными псевдонимами) по FIO, IMA, OTCH, POL, DATR и CODE_MO а потом в условии прописать 'выбрать все где ID не 0' , единственное с датами надо более грамотно все реализавать. запрос выглядит следующим образом:
Надеюсь кому-нибуть это пригодится .. (P.S. "Спасибо за помошь Zioma") |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |