This is the query I was sent. There is currently no data in the system as I was converting this query from teradata to SQL server.
SELECT user_id FROM user_table
LEFT OUTER JOIN
(
SELECT user_id , MIN(event_date) FROM event_table WHERE event_code='859' GROUP BY user_id
) join_859
ON user_table.user_id = join_859.user_id
LEFT OUTER JOIN
(
SELECT user_id , MIN(event_date) FROM event_table WHERE event_code='223' GROUP BY user_id
) join_223
ON user_table.user_id = join_223.user_id
Would the following query return the same results and perform better?
SELECT user_table.user_id, event_table.event_date
FROM user_table
LEFT OUTER JOIN event_table ON user_table.user_id = event_table.user_id
WHERE event_table.event_code IN (
'223',
'859'
)
LEFT INNER JOIN-- errr... – Jon Seigel Jan 8 at 21:14user_idcolumn, what is the purpose of the aggregate? And why bother includinguser_tablein the query, even if the output should beuser_i9d, event_date_1, event_date_2? Finally, don't use aliases that include keywords, e.g.join_859initially looked to me like ajoin. – Aaron Bertrand Jan 8 at 21:41