假设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之一,逻辑上你会有一个序列。所以如果你可以采取最低限度,你会得到最好的查询根据我 –