こんにちは、列内の名前が一意の場合は 1 を返す SQL 関数を作成したいと考えています。それ以外の場合は、その名前が一意でない場合は 1 の増分を返します。
NAME | Number
A | 1
B | 1
C | 1
C | 2
C | 3
D | 1
E | 1
私が抱えている問題は、数値をインクリメントすることです。
こんにちは、列内の名前が一意の場合は 1 を返す SQL 関数を作成したいと考えています。それ以外の場合は、その名前が一意でない場合は 1 の増分を返します。
NAME | Number
A | 1
B | 1
C | 1
C | 2
C | 3
D | 1
E | 1
私が抱えている問題は、数値をインクリメントすることです。
ANSI SQL:
select name,
row_Number() over (partition by name order by name) as number
from your_table
CREATE TABLE #TEST (NAME CHAR(1))
INSERT INTO #TEST
SELECT 'A'
UNION ALL
SELECT 'A'
UNION ALL
SELECT 'B'
UNION ALL
SELECT 'B'
UNION ALL
SELECT 'B'
UNION ALL
SELECT 'C'
UNION ALL
SELECT 'D'
SELECT NAME, ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY NAME) AS Number
FROM #TEST
SQL Server の場合は、こちらのセクション C: ROW_NUMBER() と PARTITION の使用を参照してください。
http://msdn.microsoft.com/en-us/library/ms186734.aspx
SELECT
name
, ROW_NUMBER() OVER (PARTITION BY name ORDER BY name) number
FROM tbl