2014-09-23 99 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 Server 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 2014-09-23 20:48:53

+0

@SASUSMC CTE只是邏輯/句法結構。執行計劃與您假設的期望語法有效時不會有任何不同。 – 2014-09-23 20:51:50