Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перевернуть строки / 9 сообщений из 9, страница 1 из 1
28.04.2018, 00:17
    #39637770
LisSp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
Всем привет!

Помогите, пожалуйста, перевернуть данные.

Исходная таблица:
Number Description Language1 Яблоко RUS1 Apple ENG2 Апельсин RUS2 Orange ENG


То, что нужно получить:
Number DescriptionRUS DescriptionENG1 Яблоко Apple2 Апельсин Orange

Спасибо!
...
Рейтинг: 0 / 0
28.04.2018, 07:13
    #39637821
LameUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
LisSp,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t table
(
number int,
name varchar (10),
Language varchar(3)
)

insert into @t
values (1, 'Яблоко', 'RUS'),
	   (1, 'Apple', 'ENG'),
	   (2, 'Апельсин', 'RUS'),
	   (2, 'Orange', 'ENG')


select number, max(name), min(name)
from @t
group by number




Первую часть могли бы и сами бы сделать (заполнение таблицы данными).
...
Рейтинг: 0 / 0
28.04.2018, 07:17
    #39637822
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
Гениально.
Работать будет, но препод явно не оценит.
...
Рейтинг: 0 / 0
28.04.2018, 07:27
    #39637824
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
982183,

declare @t table
(
number int,
name varchar (10),
Language varchar(3)
)

insert into @t
values (1, 'Яблоко', 'RUS'),
(1, 'Apple', 'ENG'),
(2, 'Апельсин', 'RUS'),
(2, 'Orange', 'ENG')

Select a.number,a.name as DescriptionRUS, b.name as DescriptionENG From @t a
left join @t b on a.number = b.number and b.Language = 'ENG'
Where a.Language = 'RUS'
...
Рейтинг: 0 / 0
28.04.2018, 07:48
    #39637832
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
KopellySelect a.number,a.name as DescriptionRUS, b.name as DescriptionENG From @t a
left join @t b on a.number = b.number and b.Language = 'ENG'
Where a.Language = 'RUS'left join не надо, нужно использовать или join, или full join
...
Рейтинг: 0 / 0
28.04.2018, 09:22
    #39637862
LameUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
982183Гениально.
Работать будет, но препод явно не оценит.

Еще один вариантик без джойнов:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare @t table
(
number int,
name varchar (10),
Language varchar(3)
)

insert into @t
values (1, 'Яблоко', 'RUS'),
(1, 'Apple', 'ENG'),
(2, 'Апельсин', 'RUS'),
(2, 'Orange', 'ENG')


select * from
(
	select number, 
	name r,
	lag (name) over (partition by number order by name) e
from @t ) t
where e is not null



жаль аналитические функцие в мскл нельзя использовать в блоке where, из-за чего пришлось делать внешний запрос.
...
Рейтинг: 0 / 0
28.04.2018, 09:48
    #39637877
cherox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
select Number, DescriptionRUS = RUS, DescriptionENG = ENG from (select * from @t) a pivot (max([Description]) for [Language] in (RUS, ENG)) b
...
Рейтинг: 0 / 0
28.04.2018, 09:49
    #39637880
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
KopellySelect a.number,a.name as DescriptionRUS, b.name as DescriptionENG From @t a
left join @t b on a.number = b.number and b.Language = 'ENG'
Where a.Language = 'RUS'
Если возможен left join, то делать следует не так.
Код: plaintext
1.
2.
3.
4.
select ...
from (select distinct Number from @t)
left join ... and Language='RUS'
left join ... and Language='ENG'
...
Рейтинг: 0 / 0
28.04.2018, 18:55
    #39638173
Guest993
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевернуть строки
Код: sql
1.
2.
3.
select number, [RUS], [ENG]
  from @t
 pivot (max([name]) for [language] in ([RUS], [ENG])) pvt
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перевернуть строки / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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