在检查多个值时,有没有办法对长查询进行分组或组合?

问题描述 投票:0回答:1

我有一个查询,我只想显示最近更新数据(昨天或更早)的结果。

我的查询从 4 个不同的表中提取数据,因此我需要检查每个表的

LAST_UPDATE_DATE
列。

如果其中任何一个的

LAST_UPDATE_DATE
值是昨天或更早的,那么我想提取所有这些数据。

所以我将其添加到我的查询中:

AND (a.LAST_UPDATE_DATE >= dateadd(day,datediff(day,1,GETDATE()),0)
 OR b.LAST_UPDATE_DATE >= dateadd(day,datediff(day,1,GETDATE()),0) 
 OR c.LAST_UPDATE_DATE >= dateadd(day,datediff(day,1,GETDATE()),0)
 OR d.LAST_UPDATE_DATE >= dateadd(day,datediff(day,1,GETDATE()),0)) 

我认为它有效,但是有没有办法缩短语句,因为它很长且令人困惑。

sql-server t-sql sql-server-2012
1个回答
0
投票

根据您在问题中提供的有限信息:

DECLARE @TargetDate AS DATETIME = dateadd(day,datediff(day,1,GETDATE()),0)

/* The rest of your query here */
AND (
    a.LAST_UPDATE_DATE >= @TargetDate
    OR b.LAST_UPDATE_DATE >= @TargetDate 
    OR c.LAST_UPDATE_DATE >= @TargetDate
    OR d.LAST_UPDATE_DATE >= @TargetDate
) 
© www.soinside.com 2019 - 2024. All rights reserved.