[SQL] 열 절에 하위 쿼리와 MS SQL 서버 피벗 테이블
SQL열 절에 하위 쿼리와 MS SQL 서버 피벗 테이블
임은 확실이 지금까지 답을 찾을 수 있지만 간단한 기술입니다!
나는 가지고있다
TIMESTAMP | POINTNAME | VALUE
2012-10-10 16:00:00 AHU01 20
2012-10-10 16:00:00 AHU02 25
2012-10-10 16:00:15 AHU01 26
2012-10-10 16:00:15 AHU02 35
등 ... (약 800 POINTNAMES에 대한)
많은 pointnames와 나는 'FOR'피벗의 'IN'절에서 각각의 경로를 게시 싶지 않다 정의 (구문으로 아래)하지만, 아마도 하위 쿼리를 사용하고 싶습니다.
나는 하나 개의 TIMESTAMP 값과 각 POINTNAME 많은 열을 얻을 것이다, 그래서 제가하고 싶은 것은, 타임 스탬프 및 VALUE 컬럼과 컬럼 등 모든 POINTNAME 값이다 그래서 나는 집계에 필요가 없습니다, POINTNAME PER TIMESTAMP 당 하나 개의 값이 아무것도 그래서 그냥 최대 어쨌든을 선택?
뭔가 같은 :
SELECT [TIMESTAMP] FROM ( SELECT * FROM POINT_TABLE)
PIVOT( Max[Value] FOR [POINTNAME] IN (SELECT DISTINCT [POINTNAME] FROM POINT_TABLE)
produce- 것
TIMESTAMP AHU01 AHU02
2012-10-10 16:00:00 20 25
2012-10-10 16:15:00 26 35
나는 더 아마도이 간단하게 실현할 그러나 희망 당신은 내가 달성하기 위해 노력하고있어거야?
PIVOT 구문 :
SELECT <non-pivoted column>,
[first pivoted column] AS <column name>,
[second pivoted column] AS <column name>,
...
[last pivoted column] AS <column name>
FROM
(<SELECT query that produces the data>)
AS <alias for the source query>
PIVOT
(
<aggregation function>(<column being aggregated>)
FOR
[<column that contains the values that will become column headers>]
IN ( [first pivoted column], [second pivoted column],
... [last pivoted column])
) AS <alias for the pivot table>
<optional ORDER BY clause>;
해결법
-
==============================
1.열을 동적으로 번호를 당신은 동적 SQL을 사용해야합니다
열을 동적으로 번호를 당신은 동적 SQL을 사용해야합니다
declare @cols nvarchar(max), @stmt nvarchar(max) select @cols = isnull(@cols + ', ', '') + '[' + T.POINTNAME + ']' from (select distinct POINTNAME from TABLE1) as T select @stmt = ' select * from TABLE1 as T pivot ( max(T.VALUE) for T.POINTNAME in (' + @cols + ') ) as P' exec sp_executesql @stmt = @stmt
SQL 뿐인 예
from https://stackoverflow.com/questions/13245364/ms-sql-server-pivot-table-with-subquery-in-column-clause by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL의 여러 배열의 교차로 (0) | 2020.07.08 |
---|---|
[SQL] 데이터베이스의 각 테이블의 처음 3 개 행을 선택 (0) | 2020.07.08 |
[SQL] 어떻게 내 기본 키를 선택? (0) | 2020.07.08 |
[SQL] 어떻게 두 행을 결합와 MySQL에서 두 개의 타임 스탬프 값 사이의 시간 차이를 계산? (0) | 2020.07.08 |
[SQL] 테이블이 몇 가지 고유 한 열이 있는지 여부를 알아내는 방법 (0) | 2020.07.08 |