단일 레코드 (행)를 단일 열로 표시합니다.
-
23-08-2019 - |
문제
단일 행의 데이터를 단일 열 (여러 행으로)으로 표시하는 방법을 찾고 있습니다. 예를 들어,
FieldA FieldB ------- --------- 1 Some Text [row] Header Value [col] ------ ------ FieldA 1 [row1] FieldB SomeText [row2]
SQL Server 2005로이를 수행 할 수있는 방법이 있습니까?
해결책
예, TSQL 명령, 피벗이 있습니다. 그리고이 주제에는 몇 가지 기존 스레드가 있습니다. 그러나 나는 하나를 찾을 수 없습니다.
저의 일반적인 대답 (아마도 해당 스레드의 5 또는 6)은 적절한 경우 Excel 또는 Access를 사용하는 것에 대해 생각하는 것입니다. 최종 사용자에게 가치를 제공하는 매우 쉬운 방법입니다. 그러나 ymmv.
다른 팁
비 IVOT를 사용할 수 있습니다 여기에 설명되었습니다
Declare @tbl Table
(
c1 int,
c2 int,
c3 int
)
Insert into @tbl Values(1,2,3)
Select
cname,
cval
From
(
Select C1,C2,C3 From @tbl
) t
UNPIVOT
(Cval For Cname In
(C1,C2,C3)
)As U
그러나 일반적으로 융통성이없고 느립니다. Union을 사용할 수는 있지만 일반적으로 유지 관리 측면에서는 더 나쁘지만 빠르거나 (점검해야 함) 동적 쿼리 및 Union을 사용합니다.
또 다른 간단한 방법 :
'Fielda', Fielda를 테이블에서 값으로 선택하십시오.
노동 조합
'FieldB', FieldB를 테이블에서 값으로 선택하십시오.
그러나 피벗은 실제로 당신이 시도하고 싶은 것입니다.
다른 여러 응답에서 제안한 것처럼 T-SQL 피벗 명령을 사용하십시오.
SQL Server Reporting Services에 액세스 할 수있는 경우 간단한 쿼리를 기반으로 보고서를 작성하고 Matrix Report Control을 사용할 수 있습니다. 필드를 컨트롤로 끌고 떨어 뜨리면 완료됩니다!
구체적인 것을 찾고 있다면 일반적인 솔루션이 아니라 특정 DB에 맞는 솔루션을 찾고 있다면 다음과 같은 작업을 수행 할 수 있습니다.
select Field1+';'+convert(nvarchar(255), Field2 )+';'+convert(nvarchar(255),Field3 ) from Table
Nvarchar (255)로의 전환을 사용하여 Chars가 무엇인지에 관계없이 문제가 없으므로 선택을 실행하기 전에 Collation을 수정해야합니다 (Orderby와 Groupby의 다른 방법으로 어떤 일이 일어날 지 알 수 없습니다).