How do I combine 2 select statements into one?

后端 未结 8 2215
执念已碎
执念已碎 2020-12-23 13:23

I am a noob when it comes to SQL syntax.

I have a table with lots of rows and columns of course :P Lets say it looks like this:

      AAA BBB CCC DD         


        
8条回答
  •  不知归路
    2020-12-23 14:01

    I think that's what you're looking for:

    SELECT CASE WHEN BoolField05 = 1 THEN Status ELSE 'DELETED' END AS MyStatus, t1.*
    FROM WorkItems t1
    WHERE (TextField01, TimeStamp) IN(
      SELECT TextField01, MAX(TimeStamp)
      FROM WorkItems t2
      GROUP BY t2.TextField01
      )
    AND TimeStamp > '2009-02-12 18:00:00'
    

    If you're in Oracle or in MS SQL 2005 and above, then you could do:

    SELECT *
    FROM (
      SELECT CASE WHEN BoolField05 = 1 THEN Status ELSE 'DELETED' END AS MyStatus, t1.*,
         ROW_NUMBER() OVER (PARTITION BY TextField01 ORDER BY TimeStamp DESC) AS rn
      FROM WorkItems t1
    ) to
    WHERE rn = 1
    

    , it's more efficient.

提交回复
热议问题