2015-02-04 1 views
-1

데이터베이스에 다른 요소의 데이터가 들어있는 테이블이 있습니다. 내가하고 싶은 무엇SQL Server에서이 CTE를 작성하는 방법은 무엇입니까?

LogDate SYSTEM_TABLE VIEW SQL_TABLE_VALUED_FUNCTION DEFAULT_CONSTRAINT SQL_STORED_PROCEDURE RULE FOREIGN_KEY_CONSTRAINT SERVICE_QUEUE SQL_INLINE_TABLE_VALUED_FUNCTION CHECK_CONSTRAINT USER_TABLE PRIMARY_KEY_CONSTRAINT INTERNAL_TABLE TYPE_TABLE SQL_TRIGGER SQL_SCALAR_FUNCTION UNIQUE_CONSTRAINT 
20150204 45 253 60 1401 5259 2 784 3 4 95 2141 1604 26 4 16 195 33 
20150203 45 253 60 1401 5259 2 784 3 4 95 2141 1604 16 4 16 195 33 
20150202 45 253 60 1401 5259 2 784 3 4 95 2141 1604 21 4 16 195 33 
20150201 45 253 60 1401 5259 2 784 3 4 95 2141 1604 25 4 16 195 33 
20150131 45 253 60 1401 5259 2 784 3 4 95 2141 1604 21 4 16 195 33 

가장 비교입니다 :

표는 다음과 같습니다이 데이터베이스에있는 모든 요소의 수입니다 (매일 복원, 그래서 DDL은/DML 가능한 트리거 없음) 최근 로그 날짜 (20150204)와 이전 로그 날짜 (20150203)를 비교하여 요소간에 변경 사항이 있는지 확인하십시오. 그들이 조사를 위해이는 관련 개발자에게 이메일을 해고 할 것이다 (하지만이 부분은 지금의 logdates 사이의 변경 강조 했나 순간에 중요하지 않다)

는 ETA :

그것의 일부를

IF OBJECT_ID('tempdb..#DBTotsTEMP') is not null drop table #DBTotsTEMP 

--declare variables 
DECLARE @DynamicPivotQuery as NVARCHAR(MAX) 
DECLARE @ColumnName as NVARCHAR(MAX) 

SELECT  RIGHT(date, 4) + RIGHT(LEFT(date, 5), 2) + LEFT(date, 2) AS LogDate, [count] as CNT, type_desc 
INTO   [#DBTotsTEMP] 
FROM   BI_STG.SSRS.MH_DB_Totals 
ORDER BY LogDate DESC 

SELECT @ColumnName= ISNULL(@ColumnName + ',', '') + QUOTENAME([type_desc]) 
FROM (
     SELECT DISTINCT [type_desc] FROM #DBTotsTEMP) as TypeDescs 

SET @DynamicPivotQuery = 
N'SELECT LogDate, ' + @ColumnName + ' 
    INTO #MH_DB_Totals 
    FROM #DBTotsTEMP 
    PIVOT (SUM([CNT]) 
     FOR [type_desc] in (' + @ColumnName + ')) as PVTTable 
     ORDER BY LogDate desc 
     select * from #MH_DB_Totals' 

EXEC sp_executesql @DynamicPivotQuery 

나는이 CTE 부분이 가야, 방법 또는 수치의 변화를 강조하기 위해 아무 생각이 없어 한 : 임시 테이블 등을 사용하는 훨씬 더 큰 쿼리!

+1

이미 시도해 봤어? 뭐가 문제 야? – wardva

답변

0

IDENTITY 함수를 사용하여 SELECT INTO를 사용하여 행 번호를 추가 한 다음 rowid = rowid-1에서 자신을 임시 테이블로 조인했습니다.