UPDATE:
私はまだ多くの意味がありませんが、私はここに頼まれて質問に答えていないよと結論づけました質問を、再度読んで、私はOPをいくらか小さな方法で助ける場合に備えて、これをここに残しておきます。
私はあなたが探していたものを理解したと思います。そして私は、あなたのデータをわずかに変更して、実例を作りました。したがって、110001~111000
のような値を持つpost_no
の値は、1000
に変更されました。これらの値がこのように表示される理由とその使用方法についての説明はありませんでした。
このサンプルでは、値は1000
リファレンスで割り切れるかどうかに基づいて、ご希望のamount
値を得るためにあなたの基本的な操作を提供します:返し
% (Modulus) (Transact-SQL)
1つの数字の残りを別の数字で割ったもの。
サンプル
CREATE TABLE #temp
(post_no INT, id INT, region NVARCHAR(1));
INSERT INTO #temp
(post_no, id, region)
VALUES
(1000, 1, 'A'),
(2000, 2, 'A'),
(3000, 3, 'A'),
(3222, 4, 'A'),
(1000, 5, 'B'),
(2000, 6, 'B'),
(3000, 7, 'B'),
(4000, 8, 'B'),
(4174, 9, 'B');
SELECT t.post_no,
t.id,
t.region,
CASE WHEN t.post_no % 1000 = 0
THEN post_no/ROW_NUMBER() OVER (PARTITION BY t.region ORDER BY id)
ELSE t.post_no % 1000
END AS amount
FROM #temp AS t;
DROP TABLE #temp;
結果:
post_no id region amount
----------- ----------- ------ --------------------
1000 1 A 1000
2000 2 A 1000
3000 3 A 1000
3222 4 A 222
1000 5 B 1000
2000 6 B 1000
3000 7 B 1000
4000 8 B 1000
4174 9 B 174
注:これは、さらに、単に1000年ここで、nを返すように簡略化することができる
umberは1000で割り切れますが、私は安全のためにそこに残しておきます。
あなたが使用しているライブラリやDBからデータを取得する方法を提供していないため、ここで私が手助けすることができます。 COUNT()関数を使用したいと思います。 'SELECT COUNT(post_no) FROM table_name ここではstart_1000