КАК СОЗДАТЬ ГРУППУ ПО И ДОБАВИТЬ НОМЕР ПОЛЯ В SQL - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь написать оператор SQL, который будет принимать значения из подстроки, которую я проанализировал, а затем упорядочивать их определенным образом, чтобы отразить то, что я вижу на передней панели моего экрана. Я делаю это по более длинной причине, потому что есть сценарии, которые автоматически берут то, что у меня есть в электронной таблице, и вводят их в интерфейс программы, но они должны быть настроены таким образом, чтобы программа могла их прочитать. .. короче говоря, один из них включает столбец «ВЫБОР», в котором он использует для определения количества «вкладок», которые он будет выдавать, прежде чем он нажмет «ввод»

Короче говоря, мои данные будут выглядеть вот так

SubStr(CONCATField, 1, 4) SubStr(CONCATField, 5, 5) SubStr(CONCATField, 6, 4) EffectiveDate ENDDATE

Я сортирую по EffectiveDate Descending.

Скажем, у меня есть следующие данные из следующего запроса

SELECT
    SubStr(CONCATField, 1, 4), 
    SubStr(CONCATField, 5, 5), 
    SubStr(CONCATField, 6, 4), 
    EffectiveDate, ENDDATE
FROM
    TABLE
WHERE
    XXXXX
ORDER BY
    SELECT 
        SubStr(CONCATField, 1, 4), 
        SubStr(CONCATField, 5, 5), 
        SubStr(CONCATField, 6, 4), 
        EffectiveDate DESC, ENDDATE DESC

Вывод:

FCCC T1234  P123  20190101 99991231
FCCC T1234  P123  20160101 20181231
FCCC T1234  P123  20150101 20151231
FCCC T1234  P456  20190101 99991231
FCCC T1234  P456  20160101 20181231
FCCC T1234  P456  20150101 20151231

Я хочу добавить столбец под названием PICK, в котором он будет располагаться таким образом с номером группы, как показано ниже.

SubStr (CONCATField, 1,4) SubStr (CONCATField, 5,5) SubStr (CONCATField, 6,4)

EffectiveDate ENDDATE
FCCC T12345  P123  20190101 99991231 1
FCCC T12345  P123  20160101 20181231 2
FCCC T12345  P123  20150101 20151231 3
FCCC T12345  P456  20190101 99991231 1
FCCC T12345  P456  20160101 20181231 2
FCCC T12345  P456  20150101 20151231 3

picure of what I am looking for

Мысли?

1 Ответ

0 голосов
/ 26 мая 2020

Кажется, вы ищете row_number():

select t.*,
       row_number() over (partition by SubStr(CONCATField, 1, 4), SubStr(CONCATField, 5, 5), SubStr(CONCATField, 6, 4) order by enddate desc) as pick
from t;

Вы можете упростить подстроку до substr(CONCATfield, 1, 13), если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...