2017-01-12 7 views
0

私は同じステートメントで2つの修飾句が必要だと考える必要があります。テラデータ内の同じステートメントの2つの修飾句

正しいiD(duplicate_cnt = 1)と他のすべてのids(dup_cnt> 1)を持つ列が2つ必要です。 これらの値に基づいて、別のテーブルを更新する必要があります。これはテラデータで可能ですか?

これは私のテーブルです:

Name Description Code Data_Source 
A XX 101 SCRM 
A XX 102 SCRM 
A XX 103 SCRM 
A XX 104 SCRM 
A XX 105 SCRM 
A XX 110 BSCRM 

これは私が欲しいものです:

Name Description Correct_code Incorrect code Data_Source 
A XX 101 102 SCRM 
A XX 101 103 SCRM 
A XX 101 104 SCRM 
A XX 101 105 SCRM 

おかげで、 AB

+0

いくつかのサンプルテーブルデータと期待される結果、つまり書式付きテキストを追加します。 – jarlh

答えて

1

はどのように "正しい" コード、最低の値を定義します?

使用FIRST_VALUE追加のコードを見つけるために、最低値と累積カウントを取得する:

SELECT 
    Name 
    ,Description 
    ,First_Value(Code) -- lowest code 
    Over (PARTITION BY Data_Source --, Name, Description? 
      ORDER BY code) AS Correct_code 
    ,code AS Incorrect_code 
    ,Data_Source 
FROM dropme 
QUALIFY 
    Count(*) -- only return rows with additional codes 
    Over (PARTITION BY Data_Source --, Name, Description? 
     ORDER BY code 
     ROWS Unbounded Preceding) > 1 

編集:限りオーダー&データ列として

あなたにも使用することができます同じです単純

,MIN(Code) -- lowest code 
    Over (PARTITION BY Data_Source --, Name, Description? 
     ) AS Correct_code 
+0

はい、Dnoethは正しいコードです。これは魅力のように働いた。 ありがとうございました! – user3901666

+0

ここで最も高い値を選ぶにはどうしたらいいですか? LAST_VALUE ?? – user3901666

+0

'' MAX(code)OVER(PARTITION BY Data_Source) 'を使用すると、最も低い/最高のコードを探す限り、LAST_VALUE()OVER(PARTITION BY Data_Source ORDER BYコードはUNBOUDED PRECEDINGとUNBOUNDED FOLLINGの間にあります)代わりに。注文列がデータ列と異なる場合にのみ、 'FIRST/LAST_VALUE'が必要です。 – dnoeth

関連する問題