문제

단일 행의 데이터를 단일 열 (여러 행으로)으로 표시하는 방법을 찾고 있습니다. 예를 들어,

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의 다른 방법으로 어떤 일이 일어날 지 알 수 없습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top