переписать запрос, чтобы быть более эффективным - PullRequest
0 голосов
/ 21 февраля 2020

Здравствуйте, я хочу переписать этот запрос, потому что в настоящее время он выглядит довольно плохо. В основном у меня есть таблица в моей БД, которая выглядит следующим образом:

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

Эта таблица заполнена 4 кватерами, и в столбце DT у вас будет дата для каждой отдельной даты. Я только попытался показать соответствующие данные. Я хочу выбрать минимальную и максимальную дату на основе QKey, который получен из этого запроса:

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

Этот запрос дает мне первый день четвертого квартала, но я хочу go против моего стол и захватить кучу данных, поэтому я использую таблицу для начала.

Мой текущий запрос выглядит так:

 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

1 Ответ

1 голос
/ 21 февраля 2020

Во-первых, это проще записать как:

 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

...