[SQL] 아마도 SQL 서버 PIVOT?
SQL아마도 SQL 서버 PIVOT?
SELECT 이름 1은, NAME2, MYTABLE FROM 값은 나에게 다음과 같은 결과 집합을 제공합니다 :
Name1 Name2 Value A P1 1 A P2 1 A P3 2 B P1 3 B P2 1 B P4 1
나는 그것을 번역 할 방법 :
A B P1 1 4 P2 1 1 P3 2 null P4 null 1
감사,
해결법
-
==============================
1.당신은 PIVOT 절을 사용할 수 있습니다. 귀하의 질의는 다음과 같이 될 수있다 :
당신은 PIVOT 절을 사용할 수 있습니다. 귀하의 질의는 다음과 같이 될 수있다 :
WITH Source as ( SELECT Name1, Name2, [Value] FROM mytable ) SELECT Name2, CASE WHEN A IS NOT NULL THEN A ELSE 'your string' END As A , CASE WHEN B IS NOT NULL THEN B ELSE 'your string' END As B FROM ( SELECT Name2, Name1, [Value] FROM Source ) s PIVOT ( MAX([Value]) FOR Name1 IN (A, B) -- any other Name1 would go here ) p
위의 샘플 데이터를 사용하여 내 결과는
P1 1 3 P2 1 1 P3 2 your string P4 your string 1
편집하다:
당신이 열을 알 수없는 번호를 가지고 있기 때문에, 당신은 동적 SQL을 사용하여 볼 필요하고 몇 가지 답변은 PIVOT과 그것에 대해 SO 여기에있다.
열의 알 수없는 번호에 SQL Server 2005의 피벗
피벗 테이블과 연결하여 열
-
==============================
2.SQL Server 2005를 사용하고 있기 때문에, 여기에 코드입니다 :
SQL Server 2005를 사용하고 있기 때문에, 여기에 코드입니다 :
DECLARE @cols VARCHAR(1000) DECLARE @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot' EXECUTE ( @sqlquery )
이 상관없이 당신이 얼마나 많은 다른 상태 작동하지 않습니다. 동적으로 PIVOT과 쿼리를 어셈블합니다. 동적 열이 PIVOT을 할 수있는 유일한 방법은 SQL 서버에서 수행 할 수 동적으로 쿼리를 조립하는 것입니다.
다른 예 :
-
==============================
3.나는 SQL 서버가 수도하지 않음으로써이 때문에 직장에서 여기에 실행하지 않아도 완전히 syntatically 올바른하지만 한 가지 방법은 교차 표 것
나는 SQL 서버가 수도하지 않음으로써이 때문에 직장에서 여기에 실행하지 않아도 완전히 syntatically 올바른하지만 한 가지 방법은 교차 표 것
SELECT name2 , SUM(CASE WHEN name1 = 'A' THEN value END) AS A , SUM(CASE WHEN name1 = 'B' THEN value END) AS B FROM table GROUP BY name2
컬럼의 변수 번호는 당신이 동적 SQL을 사용할 수 있습니다 :
DECLARE @sql varchar(max) SELECT @sql = COALESCE(@sql+',','') + 'SUM(CASE WHEN nane1 = '''+name1+''' THEN value END) AS ['+name1']' FROM table SET @sql = 'SELECT name2, '+@sql+' FROM table GROUP BY name2' EXEC(@sql)
from https://stackoverflow.com/questions/7182106/sql-server-pivot-perhaps by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 프로 시저 또는 함수! 지정된 인수를 너무 많이 (0) | 2020.05.05 |
---|---|
[SQL] 나는 오류 "참조 제약 조건과 충돌 DELETE 문"을 가지고 (0) | 2020.05.05 |
[SQL] 오라클의 일부 버전에 상관 하위 쿼리에 대한 중첩 제한이 있습니까? (0) | 2020.05.05 |
[SQL] 일 / 월 / 년에 (DB 또는 출력) 변경 날짜 형식 - PHP MySQL을 (0) | 2020.05.05 |
[SQL] 는 JDBC 스펙 방지합니까 '?' 오퍼레이터 (인용 외부)로 사용되는? (0) | 2020.05.05 |