0

同じ名前のレコードが複数あるsitesというテーブルがあります。例:

     Owner Name                      Owner Address    
            A                           XYZ
            A                           ABC
            B                           QWE
            B                           JKL
            C                           ZXC            
            B                           BNM

私のSQLクエリは

A1           XYZ
A2           ABC
B1           QWE
B2           JKL 
B3           BNM
C            ZXC

誰かが私にそのようなクエリを書くためのポインタを教えてもらえますか?同じ所有者名のレコードをグループ化し、異なる所有者名に毎回シーケンスを適用するのに問題があります。

4

3 に答える 3

0

使用しているデータベースシステムについては言及していません(SQL =構造化クエリ言語-クエリ言語です-データベースシステムではありません...)-ただし、SQLServer2005以降またはその他のRDBMSを使用している場合CTE(共通テーブル式)とROW_NUMBER関数をサポートします。次を使用できます。

;WITH data AS 
(
    SELECT OwnerName, OwnerAddress,
        RN = ROW_NUMBER() OVER(PARTITION BY OwnerName ORDER BY OwnerAddress)
    FROM dbo.YourTable
)
SELECT
    OwnerName + CAST(RN AS CHAR(1)), OwnerAddress
FROM Data

それは出力として返されます:

ここに画像の説明を入力してください

于 2012-08-04T10:27:51.553 に答える
0

これを試してください: SQL Server 2005 以降を使用している場合

   ;with cte as (select *,ROW_NUMBER() over(partition by Owner_Name 
    order by Owner_Address desc) as row_num  from sites),
cte1 as(select Owner_Name
    from cte 
    group by Owner_Name
    having COUNT(*)>1)
    select case when C.Owner_Name in (select Owner_Name from cte1) 
       then Owner_Name+CAST(row_num as varchar(10)) 
       else Owner_Name end as Owner_Name,Owner_Address 
       from cte C
       order by Owner_Name

結果セット

ここに画像の説明を入力

于 2012-08-04T10:43:28.560 に答える
0
SELECT OwnerName + Convert(NVARCHAR(10), ROW_NUMBER() OVER (PARTITION BY OwnerName ORDER BY OwnerName)),
       OwnerAddress
FROM   dbo.OwnerTable
于 2012-08-04T10:34:33.493 に答える