Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 合并两个select语句以进行日期比较_Sql Server_Tsql_Select_Week Number - Fatal编程技术网

Sql server 合并两个select语句以进行日期比较

Sql server 合并两个select语句以进行日期比较,sql-server,tsql,select,week-number,Sql Server,Tsql,Select,Week Number,嗨,我有以下声明: 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-

嗨,我有以下声明:

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)

非常感谢您的帮助

试试这个-

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