2013-09-26 68 views
1

嗨两个SELECT语句,我有以下声明:结合的日期比较

DECLARE @currentWEEK INT 
DECLARE @previousWEEK INT 
DECLARE @CURRENDATE DATETIME 
DECLARE @PREVIOUSDATE DATETIME 

SET @PREVIOUSDATE = YEAR(DATEADD(YEAR, -1, GETDATE())) 
SET @CURRENDATE = GETDATE() 
SET @currentWEEK = RIGHT(DATENAME(wk,'2013-05-17 00:00:00.000'),2) 
SET @previousWEEK = RIGHT(DATENAME(wk,'2012-05-17 00:00:00.000'),2) 

SELECT COUNT(*) 
FROM vevents 
WHERE RIGHT(DATENAME(wk,dbo.vEvents.DateCreated),2) = @currentWEEK 
AND 
YEAR(dbo.vEvents.DateCreated) = YEAR(@CURRENDATE) 

SELECT COUNT(*) 
FROM vevents 
    WHERE RIGHT(DATENAME(wk,dbo.vEvents.DateCreated),2) = @previousWEEK 
AND 
YEAR(dbo.vEvents.DateCreated) = @PREVIOUSDATE 

本质上讲,它一共为给定的一周内两个日期比较,但我想给两个SELECT语句结合给定日期返回一个记录集(例如CURRENTYEARCOUNT和PREVIOUSYEARCOUNT)

非常感谢您的帮助

回答

0

尝试这一个 -

DECLARE 
     @currentWEEK INT 
    , @previousWEEK INT 
    , @CURRENDATE DATETIME 
    , @PREVIOUSDATE DATETIME 

SELECT 
     @PREVIOUSDATE = YEAR(DATEADD(YEAR, -1, GETDATE())) 
    , @CURRENDATE = GETDATE() 
    , @currentWEEK = RIGHT(DATENAME(wk, '20130517'), 2) 
    , @previousWEEK = RIGHT(DATENAME(wk, '20120517'), 2) 

SELECT 
     COUNT(CASE WHEN YEAR(e.DateCreated) = @PREVIOUSDATE THEN 1 END) 
    , COUNT(CASE WHEN YEAR(e.DateCreated) = YEAR(@CURRENDATE) THEN 1 END) 
FROM dbo.vEvents e 
WHERE RIGHT(DATENAME(wk, e.DateCreated), 2) = @currentWEEK 
+0

干杯谢谢 - 多数民众赞成在 – amun1000

+0

不客气@ amun1000 :) – Devart