Мне нужно найти данные в разных категориях: Breakground, Energization и PR в зависимости от условий.Первые две категории в порядке.Данные сопоставления один к одному.Проблема в категории PR.Есть несколько дат в этой категории.Мне нужно найти минимальное значение (MilestoneDate) в этой категории, но минимальное значение (MilesotoneDate) должно быть больше, чем сегодня, и ближайшим к сегодняшнему дню.
Following are table data:
Site Building MilestoneID MilestoneType MilestoneDate
AGE building1 MIC.MS.1000 Breakground 1/1/18
AGE building1 MIC.ACT.1000 Energization 2/3/19
AGE building1 PTM.B1.1130 PR 2/5/19
AGE building1 PTM.B1.1140 PR 3/4/20
AGE building1 PTM.B1.1150 PR 12/25/20
AGE building1 PTM.B1.1160 PR 5/25/22
AGE building2 MIC.MS.1000 Breakground 2/2/19
AGE building2 MIC.ACT.1000 Energization 12/5/19
AGE building2 PTM.B2.1130 PR 3/5/20
AGE building2 PTM.B2.1140 PR 8/10/20
AGE building2 PTM.B2.1150 PR 3/4/21
AGE building2 PTM.B2.1160 PR 5/4/22
OCA building1 MIC.MS.1000 Breakground 4/2/19
OCA building1 MIC.ACT.1000 Energization 5/4/20
OCA building1 PTM.B1.1130 PR 6/8/21
OCA building1 PTM.B1.1140 PR 12/2/21
OCA building1 PTM.B1.1150 PR 3/5/22
OCA building1 PTM.B1.1160 PR 12/30/22
С представлением управления AS (ВЫБРАТЬ * ОТ УПРАВЛЕНИЯ_ВИДОМ_МАНЧИКА m ВЛЕВО СОЕДИНИТЬ (ВЫБРАТЬ)* FROM (ВЫБЕРИТЬ projectobjectid, id AS_did_id_id_id_id_id_id_d_d_ru, конечная дата AS, Milestonedate_NAME AS, ОТДЕЛЕНИЕ активности WHERE ds = (ВЫБРАТЬ макс. (Ds) ОТ действия) UNION ALL ВЫБРАТЬ Projectobjectid, ID AS_доступной_ID, мин.WHERE id IN ('LRP-RVA-B3-FS1000', 'LRP-RVA-B3-PR1000', 'LRP-RVA-B3-PR1500') И projectobjectid = 4908 GROUP BY projectobjectid, id, NAME)) p ON try_cast(m.objectid as DOUBLE) = p.projectobjection AND m.id = p.activity_id), pr AS (SELECT *, row_number () OVER (раздел сайта BY, здание, вехи) ORDER BY try (cast (substr (milestonedate, 1), 10) AS date))) rn ОТ управленческого взгляда ГДЕ попробовать (приведение (substr (milestonedate, 1, 10) AS date))> = CURRENT_DATE AND trim (milestonetype) = 'PR') ВЫБРАТЬ сайт, построитьing, id, milestonetype, milestone, milestonedate ИЗ управленческой точки зрения WHERE milestonetype IN ('Breakground', 'Energization') UNION ALL SELECT сайт, здание, id, milestonetype, milestone, milestonedate ОТ PR ГДЕ rn = 1
запрос работает нормально, но не получил желаемого результата.Мне нужно min (MilestoneDate) в категории PR, а min (MilestoneDate) должно быть больше, чем сегодня, но ближе всего к сегодняшнему дню.Этот запрос все еще дает мне несколько MilestoneDate в категории PR.Любое предложение будет оценено