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 に答える