2014-09-23 160 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