2014-09-23 6 views
1

SQL Server 2014의 set 문에서 창 함수를 사용할 수 있는지 알 수 있습니까?SQL Server 2014의 창 함수

기존 테이블의 열을 다른 테이블의 결과 개수로 설정하려고합니다. 임시 테이블을 사용하여이 작업을 수행 할 수 있습니다.이 작업은 창 작업 기능으로 더 깨끗해질 것이라고 생각했습니다.

Update #Totals 
    Set 
    TotalContacts = Count(C.PatientID) Over (Partition By C.HospCode) 
    From 
    #Totals as T 
    Inner Join 
    #Contacts as C 
    On 
    T.HospCode = C.HospCode 

답변

1

번호

SQL 서버 2014은 윈도우 기능은 set에 직접 사용되는 것을 허용하지 않습니다. 이것은 표준 SQL이 아닙니다.

2005 년 이래로이 작업을 수행 할 수있었습니다.

WITH CTE 
    AS (SELECT TotalContacts, 
       Count(C.PatientID) 
        OVER (Partition BY C.HospCode) AS Cnt 
     FROM Totals AS T 
       INNER JOIN Contacts AS C 
         ON T.HospCode = C.HospCode) 
UPDATE CTE 
SET TotalContacts = Cnt 
+0

그래, 내가 그렇게 할 수 있음을 알고있다. 그냥 바랬다. 오 잘. 이미 임시 테이블과 CTE를 최소로 유지하려고하면이 쿼리에 이미 상당 부분이 있습니다. – SASUSMC

+0

@SASUSMC CTE는 단지 논리적/구문 론적 구조입니다. 실행 계획은 가상의 원하는 구문이 유효 한 경우와 다를 바 없습니다. –