SQL-запрос для получения ToTime, где max (EndMeasDepth) и min (ReportNo) и Min (SeqNo) - PullRequest
0 голосов
/ 03 октября 2019

enter image description here

Пожалуйста, помогите. Запрос, насколько я могу получить. Вот запрос в формате TXT. Поскольку max (EndMeasDepth) равен NULL или 0, я хочу получить столбец [ToTime] с min (ReportNo) и min (SeqNO)

select D.wellid, min(ToTime) as [ToTime]from 
DailyOperations d
INNER JOIN (select WellID, max(ISNULL(EndMeasDepth,0)) AS MaxEndMeasDepth 
from DailyOperations Group By WellID) DM on DM.WellID = D.WellID and 
DM.MaxEndMeasDepth = ISNULL(D.EndMeasDepth,0)
where D.JobID ='Drilling' and D.wellid ='102193.01'
GROUP BY D.WellID
order by D.WellID

1 Ответ

0 голосов
/ 03 октября 2019

Сначала мы находим минимальное и максимальное значения, а затем получаем данные.

WITH dMax AS
(
    SELECT 
        WellID          =   d.WellID
    ,   EndMeasDepth    =   ISNULL(MAX(d.EndMeasDepth), 0)
    ,   ReportNo        =   MIN(d.ReportNo)
    ,   SeqNo           =   MIN(d.SeqNo)
    FROM
        DailyOperations AS d
    WHERE   1 = 1   --if needed
    --  AND d.JobID ='Drilling' 
    --  AND d.wellid ='102193.01'
    GROUP BY
        d.WellID
)
SELECT
    WellID  =   d.WellID
,   ToTime  =   d.ToTime
FROM
                DailyOperations AS d
    LEFT JOIN   dMax            AS dm   ON  dm.WellID = d.WellID
                                        AND dm.EndMeasDepth = ISNULL(d.EndMeasDepth, 0)
                                        AND dm.ReportNo = d.ReportNo
                                        AND dm.SeqNo = d.SeqNo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...