如何以更好的方式编写这个SQL查询。我可以避免使用CTE吗?
对于table_1的子集,我只需要获取integration_date最新的数据。对于不在子集中的数据(variable_A!= 'X'),我需要table_1中的所有数据。
Latest_dates AS ( SELECT MAX(INTEGRATION_DATE) AS MAX_INTEGRATION_DATE, ID FROM table_1 GROUP BY ID)
SELECT S.* FROM Table_1 AS S
LEFT JOIN Latest_dates ON S.INTEGRATION_DATE = Latest_dates.MAX_INTEGRATION_DATE AND S.ID= Latest_dates.ID
WHERE Latest_dates.MAX_INTEGRATION_DATE is not NULL
OR S.variable_A != 'X'
代码工作正常,但看起来很难看。
2条答案
按热度按时间yyhrrdl81#
您不需要避免使用
CTE
,但可以使用ranking functions:ev7lccsx2#