合并两个选择语句以进行日期比较 [英] Combine two select statements for date comparison

查看:73
本文介绍了合并两个选择语句以进行日期比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下陈述:

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

本质上,它比较给定一周内两个日期的总计,但是我想结合给定日期的两个选择语句以返回单个记录集(例如CURRENTYEARCOUNT和PREVIOUSYEARCOUNT)

Essentially it compares a total for two dates within a given week, but I would like to combine the two select statements for given dates to return a single record set(eg CURRENTYEARCOUNT AND 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

这篇关于合并两个选择语句以进行日期比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆