Предполагая, что все остальные поля, которые вы выбираете (кроме даты), также дублируются, вы можете использовать некоторую агрегацию в запросе, чтобы объединить выходные записи, используя либо min(event_ts)
, либо max(event_ts)
в зависимости от того, чтовы хотите увидеть:
SELECT MIN(EVENT_TS) as EVENT_TS
,EVENT_NO
,FAC_PROD_FAM_CD
,SER_NO
,DISC_AREA_ID
,DISC_AREA_DESC
,QUALITY_VELOCITY
,CMPNT_SERIAL_NO
,PROTOTYPE_IND
,EXT_CPY_STAT
FROM ABUS_DW.V_BIQ_R8_QWB_EVENTS
WHERE FAC_PROD_FAM_CD IN ('ACOM', 'SCOM', 'LAP', 'RM', 'SCRD')
AND DISC_AREA_ID IN ('400','450')
AND PROTOTYPE_IND <> 'Y'
AND EXT_CPY_STAT <> 'D'
AND EVENT_TS >= <Parameters.Start DATE>
GROUP BY
EVENT_NO
,FAC_PROD_FAM_CD
,SER_NO
,DISC_AREA_ID
,DISC_AREA_DESC
,QUALITY_VELOCITY
,CMPNT_SERIAL_NO
,PROTOTYPE_IND
,EXT_CPY_STAT
ORDER BY EVENT_TS
Если в каждой строке ваших дубликатов записей есть разные значения для FAC_PROD_FAM_CD, SER_NO, DISC_AREA_ID и т. д., то вам придется стать более любопытным.Вы можете использовать коррелированный подзапрос как один из вариантов:
SELECT EVENT_TS
,EVENT_NO
,FAC_PROD_FAM_CD
,SER_NO
,DISC_AREA_ID
,DISC_AREA_DESC
,QUALITY_VELOCITY
,CMPNT_SERIAL_NO
,PROTOTYPE_IND
,EXT_CPY_STAT
FROM ABUS_DW.V_BIQ_R8_QWB_EVENTS AS t1
WHERE FAC_PROD_FAM_CD IN ('ACOM', 'SCOM', 'LAP', 'RM', 'SCRD')
AND DISC_AREA_ID IN ('400','450')
AND PROTOTYPE_IND <> 'Y'
AND EXT_CPY_STAT <> 'D'
AND EVENT_TS =
(
SELECT MIN(EVENT_TS)
FROM ABUS_DW.V_BIQ_R8_QWB_EVENTS
WHERE FAC_PROD_FAM_CD IN ('ACOM', 'SCOM', 'LAP', 'RM', 'SCRD')
AND DISC_AREA_ID IN ('400','450')
AND PROTOTYPE_IND <> 'Y'
AND EXT_CPY_STAT <> 'D'
AND EVENT_TS >= <Parameters.Start DATE>
AND t1.EVENT_ID = EVENT_ID
)
ORDER BY EVENT_TS;
Здесь, в подзапросе, мы получаем min(event_ts)
для event_id
при всех тех же условиях WHERE, а затем мы ограничиваем основной запросчто min(event_id)
.