簡體   English   中英

SQL查詢以從組中返回特定行

[英]SQL query to return a specific row from a group

使用SQL Server

可以通過查看下表來最好地描述我遇到的問題,我想返回所有突出顯示為紅色的行。 我需要按internal_id對所有行進行分組,因為這可以重復幾次,並且從該結果集中顯示具有最小id值的行。 還有一個限制,即數據集必須為“ TEST1”且類型為“ CHANGE”。

示例表

使用row_number()函數:

select top (1) with ties t.*
from table t
where dataset = 'test1' and type = 'change'
order by row_number() over (partition by internal_id order by id);

添加了測試數據。

create table #temp_1
    ( dataset varchar(7) null
    ,id int null
    ,duration int null
    ,type varchar(10) null
    ,internal_id int null
    )


    insert into #temp_1 values
    ('TEST1',97,61,'cOMPLETE',7)
    ,('TEST1',98,61,'cHANGE',13)
    ,('TEST1',102,61,'cHANGE',16)
    ,('TEST1',103,611,'cHANGE',15)
    ,('TEST1',107,601,'cHANGE',5)
    ,('TEST1',110,601,'cHANGE',25)
    ,('TEST1',111,613,'cHANGE',35)
    ,('TEST1',113,615,'cHANGE',45)
    ,('TEST1',193,619,'cHANGE',5)
    ,('TEST1',200,620,'cHANGE',51)

    select *
    from (
    SELECT *
    ,Rank_dense = dense_rank() over(partition by type order by internal_id asc)
    ,Rank_regular = rank() over(partition by type order by internal_id asc)
    from #temp_1
    where dataset = 'Test1' and type = 'change'
    ) a
    where Rank_dense = 1 -- or Rank_dense

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM