Sql server SQL Server是否在视图中添加Where子句?

Sql server SQL Server是否在视图中添加Where子句?,sql-server,date,where,Sql Server,Date,Where,我有这样的看法: ALTER VIEW [dbo].[vw_HoursTakenPerEmployee] AS SELECT e.[EmployeeID], COALESCE(SUM(hrf.[HoursTaken]), 0) AS HoursTaken FROM [dbo].[Employee] e LEFT JOIN [dbo].[HolidayRequestForm] hrf ON e.[EmployeeID] = hrf.[EmployeeID] G

我有这样的看法:

ALTER VIEW [dbo].[vw_HoursTakenPerEmployee] AS
SELECT e.[EmployeeID], 
       COALESCE(SUM(hrf.[HoursTaken]), 0) AS HoursTaken
FROM [dbo].[Employee] e LEFT JOIN
     [dbo].[HolidayRequestForm] hrf
      ON e.[EmployeeID] = hrf.[EmployeeID]
GROUP BY e.[EmployeeID];
GO
holidayRequestform表如下所示

 EmployeeID  | HoursTaken     | YearRequested  | MonthRequested |
 ------------+----------------+ ---------------+----------------+
 1           | 8              | 2018           |06
 1           | 16             | 2019           |01
 2           | 8              | 2019           |01
 3           | 8              | 2018           |01
选择视图时,结果如下所示:

EmployeeID|HoursTaken
----------+----------
 1        |24
 2        |8
 3        |8
然而,我只想让视图计算本年度(2019年)的工时,同时保留前几年的记录

我已尝试在视图中插入
WHERE YearRequested=YEAR(GETDATE())
子句,但不确定将其放置在何处

ALTER VIEW [dbo].[vw_HoursTakenPerEmployee] AS
SELECT e.[EmployeeID], 
       COALESCE(SUM(hrf.[HoursTaken]), 0) AS HoursTaken
FROM [dbo].[Employee] e LEFT JOIN
     [dbo].[HolidayRequestForm] hrf
      ON e.[EmployeeID] = hrf.[EmployeeID]
WHERE YearRequested = YEAR(GETDATE()) 
GROUP BY e.[EmployeeID];
GO
--SQL中的SELECT子句的顺序如下

SELECT
Columns
FROM TABLEA 
WHERE 
GROUP BY
ORDER BY
--SQL中的SELECT子句的顺序如下

SELECT
Columns
FROM TABLEA 
WHERE 
GROUP BY
ORDER BY
答案是

ALTER VIEW [dbo].[vw_HoursTakenPerEmployee] AS
SELECT e.[EmployeeID], 
       COALESCE(SUM(hrf.[HoursTaken]), 0) AS HoursTaken
FROM [dbo].[Employee] e LEFT JOIN
     [dbo].[HolidayRequestForm] hrf
      ON e.[EmployeeID] = hrf.[EmployeeID]
WHERE hrf.YearRequested = YEAR(GETDATE())
GROUP BY e.[EmployeeID];
GO
**只需提供视图名称的提示。给它一个表示年份过滤器的名称

答案是

ALTER VIEW [dbo].[vw_HoursTakenPerEmployee] AS
SELECT e.[EmployeeID], 
       COALESCE(SUM(hrf.[HoursTaken]), 0) AS HoursTaken
FROM [dbo].[Employee] e LEFT JOIN
     [dbo].[HolidayRequestForm] hrf
      ON e.[EmployeeID] = hrf.[EmployeeID]
WHERE hrf.YearRequested = YEAR(GETDATE())
GROUP BY e.[EmployeeID];
GO

**只需提供视图名称的提示。给它一个表示年份过滤器的名称

谢谢你的提示