重写查询以提高效率

rewrite query to be more efficient

您好,我希望重写此查询,因为目前它看起来很糟糕。基本上我的数据库中有一个 table,看起来像这样:

Dt            QKey      QDisplay
12/31/2019    201904    Qtr 04
12/30/2019    201904    Qtr 04
.....
10/01/2019    201904    Qtr 04

此 table 填充了 4 个四分之一,在 DT 列中,每个日期都有一个日期。我只是试图显示相关数据。 我正在寻找 select 基于 QKey 的 MIN 和 MAX 日期,该 QKey 派生自此查询:

 SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) - 1, 0)

此查询为我提供了第 4 季度的第一天,但​​我想违背我的 table 并获取大量数据,这就是我使用 table 开始的原因。

我当前的查询如下所示:

 SELECT MIN(Dt)'FROM', MAX(Dt)'TO',QKey,QDisplay 
 FROM tbl1
 WHERE QKey = (SELECT QKey 
    FROM tbl1
    WHERE Dt = (SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) - 1, 0)))
 Group By Qkey, QDisplay

期望的最终结果:

FROM                 TO                Qkey          QDisplay
2019-10-01           2019-12-31        201904        Qtr 04

首先更简单的写成:

 SELECT MIN(Dt) as [FROM], MAX(Dt) as [TO], QKey, QDisplay 
 FROM tbl1
 WHERE QKey = (SELECT QKey 
               FROM tbl1
               WHERE Dt = DATEADD(qq, DATEDIFF(quarter, 0, GETDATE()) - 1, 0))
              );

然后您想对 QKeyQDisplay 上的语法错误做一些处理。

为此,您需要 tbl1(dt, qkey) 和 `tbl1(qkey, dt, display

上的索引