powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Молю, помогите, надеюсь на Glory
7 сообщений из 7, страница 1 из 1
Молю, помогите, надеюсь на Glory
    #32031004
Катя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Повторяюсь уже, но не получилось,задача та же самая но с комментариями,небольшие пояснения,в отличие от примера в ссылке http://www.sql.ru/articles/article.php?id=153 у меня,
ничего суммировать не надо, просто если было
----------------------------------------------
Имя |Телефон | Дом
----------------------------------------------
Катя |12548 | 14
----------------------------------------------
Катя |25644 | 10
----------------------------------------------
Оля |25466 | 45
----------------------------------------------
то хочется получить
-----------------------------------------------------------------
Имя |Телефон1 |Телефон2 | Дом1| Дом1
-----------------------------------------------------------------
Катя |12548 | 25644 | 14 | 10
-----------------------------------------------------------------
Оля |25466 | ------ | 45 |---
------------------------------------------------------------------
если имеет значение,для простоты Оль как Кать по две записи ,т..е известно количетсво Телефон1,Телефон1 ну количество столбцов
...
Рейтинг: 0 / 0
Молю, помогите, надеюсь на Glory
    #32031019
Denis.R.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create table tbl
(
nam varchar(10) not null,
tel char(5) not null,
dom int not null
)
insert into tbl
values ('kata','12345',11)
insert into tbl
values ('kata','23456',12)
insert into tbl
values ('sahsa','34567',13)
insert into tbl
values ('sahsa','45678',14)
insert into tbl
values ('gena','56789',15)
select * from tbl

select
t.nam,
t.tel as tel1,
tt.tel as tel2,
t.dom as dom1,tt.dom as dom2
from tbl t inner join tbl tt
on t.nam=tt.nam
and (t.tel<tt.tel or t.dom<tt.dom)
where tt.tel is not null and tt.dom is not null
union all
select
t.nam,
t.tel as tel1,
tt.tel as tel2,
t.dom as dom1,tt.dom as dom2
from tbl t left outer join tbl tt
on t.nam=tt.nam
and (t.tel<>tt.tel or t.dom<>tt.dom)
where tt.tel is null and tt.dom is null
-----------------------------------------------
nam tel dom
kata 12345 11
kata 23456 12
sahsa 34567 13
sahsa 45678 14
gena 56789 15

(5 row(s) affected)

nam tel1 tel2 dom1 dom2
kata 12345 23456 11 12
sahsa 34567 45678 13 14
gena 56789 15

(3 row(s) affected)
...
Рейтинг: 0 / 0
Молю, помогите, надеюсь на Glory
    #32031021
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
code:
Должно получиться наподобие следующего:

DECLARE @t TABLE
(
[Name] varchar(10) NOT NULL,
[Phone] char(5) NOT NULL,
[Street_No] int NOT NULL
)

INSERT @t ([Name], [Phone], [Street_No]) VALUES ('Olia', '25466', 45)
INSERT @t ([Name], [Phone], [Street_No]) VALUES ('Katia', '12548', 14)
INSERT @t ([Name], [Phone], [Street_No]) VALUES ('Katia', '25644', 10)


SELECT t1.*
FROM
(
SELECT t.[Name], t.[Phone], MAX(t1.[Street_No]) AS [Street_No]
FROM
(
SELECT t.[Name], MAX(t.[Phone]) AS [Phone]
FROM
@t t
GROUP BY t.[Name]
) t
INNER JOIN @t t1
ON t.[Name] = t1.[Name] AND t.[Phone] = t1.[Phone]
GROUP BY t.[Name], t.[Phone]
) x
INNER JOIN
(
SELECT t1.[Name], t1.[Phone] AS [Phone1], t2.[Phone] AS [Phone2], t1.[Street_No] AS [Street_No1], t2.[Street_No] AS [Street_No2]
FROM
@t t1
LEFT OUTER JOIN @t t2
ON t1.[Name] = t2.[Name] AND (t1.[Phone] <> t2.[Phone] OR t1.[Street_No] <> t2.[Street_No])
) t1
ON t1.[Name] = x.[Name] AND t1.[Phone1] = x.[Phone] AND t1.[Street_No1] = x.[Street_No]
...
Рейтинг: 0 / 0
Молю, помогите, надеюсь на Glory
    #32031033
Катя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо мальчики, но только я наверное не до конца объяснила,а если у меня строк 12000,то получается в запрос всех так ручками и вводить Оль, Кать,..
я имела ввиду универсальный запрос который бы переформатировал таблицу, единственное что постоянно что строк всегда по две т.е две строки с Катей,две С Олей и т.д. и все столбцы в этих строках заполнены т.е. телефон, дом
поэтому в конечной таблице из каждых двух строк должна получится одна где вся информация дублируетя т.е два телефона, два дома кроме имени имя одно Катя
...
Рейтинг: 0 / 0
Молю, помогите, надеюсь на Glory
    #32031053
Катя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО!
...
Рейтинг: 0 / 0
Молю, помогите, надеюсь на Glory
    #32031072
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, не дали перед девушкой "покрасоваться"


ЗЫ
2Катя
А вот если бы у таблицы был бы первичный ключ, то все было бы гораздо "красивее"
...
Рейтинг: 0 / 0
Молю, помогите, надеюсь на Glory
    #32031108
Катя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Молю, помогите, надеюсь на Glory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]