重写查询以提高效率
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))
);
然后您想对 QKey
和 QDisplay
上的语法错误做一些处理。
为此,您需要 tbl1(dt, qkey)
和 `tbl1(qkey, dt, display
上的索引
您好,我希望重写此查询,因为目前它看起来很糟糕。基本上我的数据库中有一个 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))
);
然后您想对 QKey
和 QDisplay
上的语法错误做一些处理。
为此,您需要 tbl1(dt, qkey)
和 `tbl1(qkey, dt, display