Beantwortet Query Help

  • יום שישי 17 אוגוסט 2012 21:25
     
      קוד כלול

    Hi ,

    I have a table which contains :id, emailaddress, importflag, updatedatetime

    I need to retrieve all the emailaddress from the table which have importflag='N' for most recent updatedatetime

    Sample Table and Data is below :

    CREATE TABLE #test1  (id INT IDENTITY(1,1), 
                          emailaddress VARCHAR(128), 
                          importflag CHAR(1),
                          updatedatetime DATETIME )
                          
    INSERT INTO #test1 VALUES ( 'go123@gmail.com', 'Y','2012-08-17')
    INSERT INTO #test1 VALUES ( 'go123@gmail.com', 'N','2012-08-16')
    INSERT INTO #test1 VALUES ( 'funtrap@gmail.com', 'N','2012-08-14')
    INSERT INTO #test1 VALUES ( 'funtrap@gmail.com', 'Y','2012-08-13')
    

    The table data looks like this :

    The desired output:

    Please guide ...

    Thanks,


    EVA05

כל התגובות

  • יום שישי 17 אוגוסט 2012 21:43
    מנחה דיון
     
     תשובה קוד כלול
    Use the ROW_NUMBER() function for this; perhaps something like this:
    ;with cte as
    ( select
        emailAddress,
        importFlag,
        row_Number() over
        ( partition by emailAddress
          order by updateDatetime desc
        ) as Rn
      from yourTable
    )
      select emailAddress
      from cte
      where rn = 1
        and importFlag = 'N'
    ;

  • יום שישי 17 אוגוסט 2012 21:47
     
     הצעה לתשובה

    WITH CTE AS

    (SELECT EMAILADDRESS, IMPORTFLAG, UPDATEDATETIME FROM #TABLE WHERE IPORTFLAG='N')

    select EMAILADDRESS FROM CTE WHERE UPDATEDATETIME=(SELECT MAX(UPDATEDATETIME FROM CTE)


    ANK HIT - if reply helps, please mark it as ANSWER or helpful post

    • הוצע כתשובה על-ידי ank hit יום שישי 17 אוגוסט 2012 21:47
    •