2014-09-23 3 views
1

Кто-нибудь знает, можете ли вы использовать функции окна в задании набора в SQL Server 2014?Оконные функции в 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

No.

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

+0

@SASUSMC CTE - это просто логическая/синтаксическая конструкция. План выполнения не будет отличаться от того, был ли ваш гипотетический желаемый синтаксис действительным. –

Смежные вопросы