2016-07-20 11 views
1

これは「where」句に含まれます...給与計算サイクルに基づいて四半期を見つけるにはどうすればよいですか?当社の給与計算サイクルは、四半期の25日に開始し、四半期の10日に終わります。たとえば、... 第2四半期は2010年4月25日に開始し、2010年7月10日に終了します。給与計算サイクルに基づいて四半期を見つけよう

+0

すべての四半期の開始日と終了日を1年間指定できます – scsimon

+0

第1四半期の開始日は1/25/16です。終了日は4/10/16です。第2四半期の開始は4/25/16の終了は7/10/16です。 3/4スタートは7/25/16エンドは9/10/16です。第4四半期は9/25/16終了です1/10/17です – Benjo

+0

ありがとうございます。特定の給与計算日がどの四半期に該当するのかを確認しようとしていることを明確にするために、正しいのでしょうか? – scsimon

答えて

0

あなたがしていることを完全に理解するのは難しいですが、ここではうまくいくはずです。あなたはあなたが望むものに合うように日付を編集することができますが、私はそれをあなたが述べたものに基づいて作ったのです。

--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

非常に涼しい!あなたの助けに感謝します。 – Benjo

+0

それはあなたのために働いた@ベンジョ – scsimon

関連する問題