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

Откуда:
Сообщений: 16
привет ребята

данные таблицы так

declare @t1 table(id int not null identity(1,1),
question1 nvarchar(100),
question2 nvarchar(100)
)

declare @t2 table(id int not null identity(1,1),
question_id int ,
answear nvarchar(100)
)

insert into @t1(question1,question2)
values('A','B')

insert into @t2(question_id,answear)
values(1,'w'),(1,'y'),(1,'z')
,(2,'a'),(2,'b'),(2,'c')

select * from  @t1
select * from @t2

id	question
1	A
2	B


id	question_id	answear
1	1	w
2	1	y
3	1	z
4	2	a
5	2	b
6	2	c



как я могу получит такой резултать
спасибо

 id_ques    ques    ans1   ans2    ans3
1               A         w       y          z

2               B         a        b          c
19 янв 18, 01:52    [21118480]     Ответить | Цитировать Сообщить модератору
 Re: проблема селект  [new]
Massa52
Member

Откуда:
Сообщений: 373
Itex2017,

Чет нестыковка, может так
declare @t1 table(id int not null identity(1,1),
question nvarchar(100)
)

declare @t2 table(id int not null identity(1,1),
question_id int ,
answear nvarchar(100)
)

insert into @t1(question)
values('A'),('B')

insert into @t2(question_id,answear)
values(1,'w'),(1,'y'),(1,'z')
,(2,'a'),(2,'b'),(2,'c')

select * from  @t1
select * from @t2
19 янв 18, 03:02    [21118486]     Ответить | Цитировать Сообщить модератору
 Re: проблема селект  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Itex2017, PIVOT + ROW_NUMBER
19 янв 18, 10:21    [21118997]     Ответить | Цитировать Сообщить модератору
 Re: проблема селект  [new]
Itex2017
Member

Откуда:
Сообщений: 16
Minamoto
Itex2017, PIVOT + ROW_NUMBER

????
модел ест ?
буду попробовать
19 янв 18, 13:56    [21120187]     Ответить | Цитировать Сообщить модератору
 Re: проблема селект  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 774
Itex2017,

что-то не выходіт каменный цветок
select question_id,question, [1],[2],[3]
from
(select question,b.*, ROW_NUMBER() over(partition by question order by b.id) rn
from @t1 a
inner join @t2 b on a.id=b.question_id) k
pivot ( min(answear)
for rn in([1],[2],[3]) 
) as pvt


id q 1 2 3
1 A w NULL NULL
1 A NULL y NULL
1 A NULL NULL z
2 B a NULL NULL
2 B NULL b NULL
2 B NULL NULL c
19 янв 18, 14:29    [21120395]     Ответить | Цитировать Сообщить модератору
 Re: проблема селект  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 774
Шыфл, вот так лучше

select question_id,question, max([1]),max([2]),max([3])
from
(
select question_id,question, [1],[2],[3]
from
(select question,b.*, ROW_NUMBER() over(partition by question order by b.id) rn
from @t1 a
inner join @t2 b on a.id=b.question_id) k
pivot ( min(answear)
for rn in([1],[2],[3]) 
) as pvt
) d group by question_id,question


id q 1 2 3
1 A w y z
2 B a b c
19 янв 18, 14:32    [21120416]     Ответить | Цитировать Сообщить модератору
 Re: проблема селект  [new]
prog882_guest
Guest
Itex2017,

select *
from (
select question_id, answear, row_number() over(partition by question_id order by id) as  rn
from @t2 ) as t2 
pivot ( max(answear) for rn in ([1],[2],[3])) as pvt
join  @t1 as t1 on pvt.question_id = t1.id
19 янв 18, 16:51    [21121070]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить