SQL 服务器将 Where 子句添加到视图中?
SQL Server Adding a Where clause into a view?
我有这样的看法:
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 table 看起来像这样。
EmployeeID | HoursTaken | YearRequested | MonthRequested |
------------+----------------+ ---------------+----------------+
1 | 8 | 2018 |06
1 | 16 | 2019 |01
2 | 8 | 2019 |01
3 | 8 | 2018 |01
当我select查看时,结果如下:
EmployeeID|HoursTaken
----------+----------
1 |24
2 |8
3 |8
但是我只想让视图计算当年(2019 年)的 hoursTaken,同时仍保留前几年的记录。
我试过在视图中插入一个 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
--SELECT SQL 中的 CLAUSE 按此顺序
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]
GROUP BY e.[EmployeeID];
GO
holidayRequestform table 看起来像这样。
EmployeeID | HoursTaken | YearRequested | MonthRequested |
------------+----------------+ ---------------+----------------+
1 | 8 | 2018 |06
1 | 16 | 2019 |01
2 | 8 | 2019 |01
3 | 8 | 2018 |01
当我select查看时,结果如下:
EmployeeID|HoursTaken
----------+----------
1 |24
2 |8
3 |8
但是我只想让视图计算当年(2019 年)的 hoursTaken,同时仍保留前几年的记录。
我试过在视图中插入一个 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
--SELECT SQL 中的 CLAUSE 按此顺序
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
** 只是提示您的视图名称。给它起一个表明年份过滤器的名字