假設id是唯一的。 數據庫無關的解決方案在一定程度上:
select
company_id, node_id, (select txt from T_TBL_DATA t2 where t2.id = min(t1.id))
from T_TBL_DATA t1
group by company_id, node_id
對於MS SQL Server 2005和更高一點點簡單:
-- =============
-- sample data
-- =============
declare @t table
(
id int,
company_id int,
node_id int,
txt varchar(50)
)
insert into @t values (1, 1, 1, 'abc1')
insert into @t values (2, 1, 1, 'abc2')
insert into @t values (3, 1, 2, 'abc3')
insert into @t values (4, 1, 2, 'abc4')
insert into @t values (5, 2, 1, 'abc5')
insert into @t values (6, 2, 1, 'abc6')
insert into @t values (7, 2, 2, 'abc7')
insert into @t values (8, 2, 2, 'abc8')
-- =============
-- solution
-- =============
select
company_id, node_id, txt
from
(
select
*,
id2 = min(id) over(partition by company_id, node_id)
from @t
) t
where id = id2
什麼ID節點或公司??????????? –
@Royi Namir:row_id。我更新了這個問題。 – Naor
@Naor只是一個想法,如果你的表的主鍵是公司ID或節點ID之一,邏輯上你會有一個序列。所以如果你可以採取最低限度,你會得到最好的查詢根據我 –