У меня проблема, когда набор данных иногда возвращает 2 строки для серийного номера. Это происходит, когда серийный номер был удален и имеет одну строку, в которой дата удаления равна NULL, и одну строку, в которой его заполнено
Мне удалось получить запрос, в котором значения NULLS удалены, с помощью предложения min () и group by, но это также удаляет значения NULL, в которых счетчик не был удален.
SELECT [MeterSerialNumber]
,[EquipmentType]
,[InstallDate]
,min ([Removaldate] ) as REM_DATE
,round (DATEDIFF(DAY,InstallDate,case when Removaldate IS null then convert (date,GETDATE()) else Removaldate end)/30.42,0) as Age_M
FROM [DOCDPT].[main].[Tbl_Device_ISU]
where EquipmentType in ('S1','NS','NSS') or EquipmentType like ('%S2%')
Group by MeterSerialNumber,EquipmentType,InstallDate,Removaldate having COUNT(distinct removaldate) =1
order by MeterSerialNumber
,Removaldate desc
Это результаты до добавления в min () и group by. Я хотел бы удалить ряд 2, так как счетчик был удален, но оставил 2 нижних ряда. Код выше, кажется, просто удаляет все NULL. Я хочу удалить значения NULL только в том случае, если счетчик чисел появляется более одного раза.
MeterSerialNumber I EquipmentType I InstallDate I Removaldate I Age_M
000009501794462 I S1 I 2017-06-18 I 2018-01-22 I 7.000000
000009501794462 I S1 I 2017-06-18 I NULL I 23.000000
000009999203079 I S1 I 2017-06-18 I NULL I 23.000000
000009995553079 I S1 I 2017-06-18 I NULL I 23.000000
Полагаю, проблема в том, что счетчик не считается NULL