2016-07-20 7 views
1

Dies wäre in der "Wo" -Klausel ... Wie finde ich Viertel basierend auf einem Gehaltsabrechnungszyklus? Unser Gehaltsabrechnungszyklus beginnt am 25. des Quartalsmonats und endet am 10. des Quartalsmonats. Zum Beispiel ... Das 2. Quartal beginnt am 25.04.2016 und endet am 07.10.2016.Monatssätze basierend auf dem Abrechnungszyklus finden

+0

können Sie die Start- und Enddaten für alle Quartale für 1 Jahr – scsimon

+0

1. Quartal Start gie ist 1/25/16 Ende ist 4/10/16; 2. Viertel Start ist 4/25/16 Ende ist 7/10/16; 3. Viertel Start ist 7/25/16 Ende ist 9/10/16; 4. Quartal Start ist 9/25/16 Ende ist 1/10/17 – Benjo

+0

Danke. Und nur um zu verdeutlichen, dass Sie versuchen zu sehen, in welches Quartal ein bestimmtes Abrechnungsdatum fällt, richtig? – scsimon

Antwort

0

Ok es ist irgendwie schwer zu verstehen, was Sie tun, aber hier ist etwas, das funktionieren sollte. Sie können die Daten bearbeiten, um zu passen, was Sie wollen, aber ich habe es basierend gemacht, was Sie angegeben haben.

--This is just test data... you can use your own table 
IF OBJECT_ID('tempdb..#payroll') IS NOT NULL DROP TABLE #payroll 

CREATE TABLE #payroll (dates date) 

INSERT INTO #payroll (dates) VALUES 
('1/1/2016'), 
('1/16/2016'), 
('2/4/2016'), 
('3/3/2016'), 
('3/19/2016'), 
('4/18/2016'), 
('5/6/2016'), 
('6/4/2016'), 
('6/29/2016'), 
('7/4/2016'), 
('7/31/2016'), 
('8/9/2016'), 
('9/1/2016'), 
('10/3/2016'), 
('10/19/0216'), 
('11/4/2016'), 
('11/21/2016'), 
('12/2/2016'), 
('1/1/2016'), 
('1/8/2017'), 
('1/21/2017') 


--variable for what ever quarter you want to limit on. 1-4 
declare @Quarter int 
set @Quarter = 4 


--Year that you are focused on. If left to NULL it uses the current year 
declare @Year int 
set @Year = NULL 

IF @Year IS NULL 
    BEGIN 
     SET @Year = Year(GETDATE()) 
    END 

--Date parameters that we will use to filter 
declare @startDate date = null 
declare @endDate date = null 

--logic to set your quarters 
set @startDate = case 
        when @Quarter = 1 then '1/25/' + CAST(@Year as varchar(4)) 
        when @Quarter = 2 then '4/25/' + CAST(@Year as varchar(4)) 
        when @Quarter = 3 then '7/25/' + CAST(@Year as varchar(4)) 
        when @Quarter = 4 then '9/25/' + CAST(@Year as varchar(4)) 
       end 
set @endDate = case 
        when @Quarter = 1 then '4/10/' + CAST(@Year as varchar(4)) 
        when @Quarter = 2 then '7/10/' + CAST(@Year as varchar(4)) 
        when @Quarter = 3 then '9/10/' + CAST(@Year as varchar(4)) 
        when @Quarter = 4 then '1/10/' + CAST((@Year + 1)as varchar(4)) 
       end 


--run it to test results 
select * 
from #payroll 
where dates between @startDate and @endDate 
+0

sehr cool! Vielen Dank für Ihre Hilfe! – Benjo

+0

Hat es für dich @Benjo funktioniert – scsimon

Verwandte Themen