1

假设我有下表:

CREATE TABLE test(
id int identity not null primary key,
code nvarchar(50),
name nvarchar(50),
node_code nvarchar(50),
parent_node nvarchar(50),
prop1 int,
prop2 datetime,
prop3 nvarchar(50)
);

代码和名称是相关的,它们构成了属性的键。因此该表可能包含以下数据:

CODE001 NAME001 [3 PROPS]
CODE001 NAME001 [3 PROPS]
CODE002 NAME002 [3 PROPS]
CODE002 NAME002 [3 PROPS]
...

我知道这不是一个好的设计,但我必须忍受它。

现在的问题是我想获取代码名称列表以及它们的节点代码和父节点代码(节点代码对于代码和名称键是唯一的),而不是属性。我可以做这个:

select DISTINCT code, name, node_code, parent_code from test

但我严重怀疑这是否是最有效的方法。我需要建议。

4

1 回答 1

0

你可以这样做:

SELECT code, name, node_code, parent_code ,prop1, prop2, prop3 FROM
(
    SELECT 
        ROW_NUMBER() OVER (PARTITION BY code, name, node_code, parent_code ORDER BY code, name, node_code, parent_code) AS RN,
        code, name, node_code, parent_code,prop1,prop2,prop3
    FROM test
) TEST2
WHERE TEST2.RN = 1

您可以在此处了解更多相关信息

于 2013-10-09T03:53:46.807 回答