मेरे पास यह दृष्टिकोण है:

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

हॉलिडे रिक्वेस्टफॉर्म टेबल कुछ इस तरह दिखती है।

 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()) खंड डालने का प्रयास किया है, लेकिन मुझे यकीन नहीं है कि मैं इसे कहां रखूंगा।

0
Conor8630 9 जिंदा 2019, 16:38

2 जवाब

सबसे बढ़िया उत्तर

जवाब है कि

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

** आपके विचार के नाम के लिए बस एक टिप। इसे एक ऐसा नाम दें जो वर्ष फ़िल्टर को इंगित करता हो

3
Krismorte 9 जिंदा 2019, 16:56
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
Columns
FROM TABLEA 
WHERE 
GROUP BY
ORDER BY
2
JonWay 9 जिंदा 2019, 16:41