How to GROUP and choose lowest value in SQL

前端 未结 4 1615
无人共我
无人共我 2020-12-14 09:17

I have table consisting of these fields:

 id  |   date_from  | date_to      |   price
 --------------------------------------------
 CK1     22-12-2012   29-         


        
4条回答
  •  一生所求
    2020-12-14 09:41

    If your dbms support cte then you can do like this;

    Test data

    DECLARE @tbl TABLE
    (
        id VARCHAR(100),
        date_from VARCHAR(100),
        date_to VARCHAR(100),
        price INT
    )
    
    INSERT INTO @tbl
    VALUES
        ('CK1','22-12-2012','29-12-2012',800),
        ('CK1','22-12-2012','29-12-2012',1200),
        ('CK2','22-12-2012','29-12-2012',1400),
        ('CK2','22-12-2012','29-12-2012',1800),
        ('CK2','22-12-2012','29-12-2012',2200)
    

    Query

    ;WITH CTE
    AS
    (   
        SELECT
            RANK() OVER(PARTITION BY id ORDER BY price ASC) AS RowNbr,
            tbl.*
        FROM
            @tbl AS tbl
    )
    SELECT
        *
    FROM
        CTE
    WHERE
        CTE.RowNbr=1
    

提交回复
热议问题