2017-12-15 8 views
0

私は元に戻そうとしている2つの列を持ち、最初の列(ID)には各IDに複数の関連名があります。値は同じテーブルに存在します。SQL Serverで重複する値の名前を変更する方法

私は実際のテーブルを更新したくなく、重複レコードの名前を追加/変更する方法を見つけようとしています。

理論的には私のクエリは、2つの列を持つ終わるでしょう:

ID     Name 
-------------------------- 
1     A 
2     B 
3     C1 
3     C2 
3     C3 

だけ抽出に重複する値に値を追加し、実際のテーブルを更新しないようにする方法はありますか?このような

+0

データの既存の状態は何ですか?そして、途中でデータの望ましい状態は何ですか?上記のようなテーブルに表示されます。 –

答えて

0

が鳴ります。ただし、Nameの順番は任意であり、ビューから選択するたびに同じではない可能性があることに注意してください。

1

何かがそれを行うだろう:

CREATE VIEW dbo.vPartitioned AS 
SELECT 
    ID, 
    char(64 + ID) + 
     CASE 
     WHEN COUNT(*) OVER (PARTITION BY ID) > 1 THEN CONVERT(nvarchar, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID)) 
     ELSE '' 
     END Name 
FROM [table] 

次に、ビューの代わりに、表から選択する:あなたはこのように、VIEWを探しているよう

SELECT 
    ID 
    , 
     Name + 
     CASE 
      WHEN COUNT(*) OVER (PARTITION BY ID) = 1 
      THEN '' 
      ELSE CAST(ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS varchar) 
     END Name 
FROM YourTable 
関連する問題