에 결과를 롤업하는 방법 :SQL - 나는 테이블이있는 경우 1 행
Col1 Col2 Col3
Red Blue Green
나는 그냥 할 것 :
ID NAME
1 Red
2 Blue
3 Green
을 내 결과가되도록 내가 쿼리를 반환 할 수있는 방법 내부 조인 자체 또는 피벗 테이블이 필요합니까?
에 결과를 롤업하는 방법 :SQL - 나는 테이블이있는 경우 1 행
Col1 Col2 Col3
Red Blue Green
나는 그냥 할 것 :
ID NAME
1 Red
2 Blue
3 Green
을 내 결과가되도록 내가 쿼리를 반환 할 수있는 방법 내부 조인 자체 또는 피벗 테이블이 필요합니까?
예, 당신은 그것을 가입으로 할 수있는 예 :
select t1.name col1, t2.name col2, t3.name col3
from yourtable t1
join yourtable t2 on t2.id=2
join yourtable t3 on t3.id=3
where t1.id=1;
아니면 같은 포함 된 SELECT 문, 함께 할 간단하게 할 수 있습니다 : MySQL의에서 : 오라클에서
select
(select name from yourtable where id=1) col1,
(select name from yourtable where id=2) col2,
(select name from yourtable where id=3) col3;
:
,select
(select name from yourtable where id=1) col1,
(select name from yourtable where id=2) col2,
(select name from yourtable where id=3) col3
from dual;
물론이 쿼리에서 열 수는 고정되어 있으므로 롤업 할 행을 추가 할 경우 편집해야합니다.
이것은 3 행에서만 작동하며 각 행에 대해 하나의 libe를 추가해야합니다 !! – Hadi
예, 롤업 할 고정 행 수가있는 경우이 솔루션은 질문의 조인 부분에 응답합니다. – quantummind
당신이 PIVOT 동적 SQL을 사용할 수 있습니다
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(id)
from yourtable
group by ColumnName, id
order by id
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = N'SELECT ' + @cols + N' from
(
select id, ColumnName
from yourtable
) x
pivot
(
max(ColumnName)
for id in (' + @cols + N')
) p '
exec sp_executesql @query;
피벗을 사용해 보셨습니까? –
예제처럼 간단하면 별칭을 지정할 수 있습니다. 더 복잡하거나 역동적 인 경우 피벗을 사용합니다. – Santi
쿼리가 사소하지 않도록 더 많은 데이터를 표시 할 수 있습니까? –