2016-09-14 3 views
0

Jemand hier war so nett, ein Skript zur Verfügung stellen, um mir helfen, Zahlen in Inkrement zu generieren, so dass es wie die PIN-Nummer unten aussehen könnte. Ich lief das Skript und bemerkte die minimale PIN-Nummer erzeugte 10000 ist die wirklich 4310
Tabellenname sein sollte: CitizenWollen Sie Daten inkrementell generiert, stattdessen Zufallszahlen generiert

Firstname  Lastname PIN  Address Age other columns.... 
John    Smith  4310  20001  19 
Andrew   Evans  4311  363252 30 
Bill    Towny  4312  63322  67 
Dame    Beaut  4313  34222  34 



WITH PIN_NO 
AS 
(
SELECT 4310 + ROW_NUMBER() OVER(ORDER BY [All LP First Name]) NEW_PIN, *  
FROM [dbo].[C3MDMRevsBens] 
) 

UPDATE PIN_NO 
SET [Account Reference Number] = CAST(NEW_PIN AS VARCHAR(10)) 

Wenn ich die PIN-Nummer in asc Reihenfolge geordnet, unten sind die erzeugten Zahlen von Einträgen 1 .....

select * from Citizen order by PIN asc 

ODER

SELECT MIN(PIN) FROM Citizen 

.

10000 
100000 
100001 
100002 
100003 
100004 
100005 
100006 
100007 
100008 
100009 
10001 

Dank

+1

Basierend auf Ihren Ausgabedaten erscheint PIN als eine varchar- oder nvarchar-Spalte. Sie müssen entweder die Spaltendefinition in einen numerischen Wert ändern (z. B. int), oder wenn dies nicht möglich ist, müssen Sie die Spalte in Ihrer ORDER BY-Klausel "CAST". – bassrek

+0

basierend auf Frage http://stackoverflow.com/questions/39490273/adding-preserving-leading-zero-while-updating-a-column – swe

Antwort

1

Ihre Abfrage funktioniert gut ... ich getestet habe. Wie @bassrek sagt, es ist Ihre SELECT-Abfrage, die überprüft werden muss:

select * from Citizen order by CAST(Pin AS int) 

Da Pin scheint vor So 4.

zu sein, ein nvarchar und 10000 kommt müssen Sie Stift Spalte in int oder Verwendung ändern eine Besetzung in auswählen.

+0

PERFEKT .... alles, was ich tun musste, war von nvarchar zu int ändern. Klingt so, als müsste ich 'int' fortfahren, wo immer es möglich ist .... – optimisteve