2016-07-01 3 views
0

ImageWie update Row_number Spalte von nicht leer Zeile in einer anderen Spalte

Ich habe Abfrage wie diese in Bild. Ich brauche solche rownum Spalte zu aktualisieren, wie es durch TIN Spalte numerated werden, wie diese

RowNum  ...  TIN     (other columns) 
1   ...  01709199810113  (other data) 
      ... 
      ... 
2   ...  40705200210056 
      ... 
      ... 
3   ...  02803199610090 
      ... 
      ... 
4   ...  01007200310037 
5   ...  02603200410213 
6   ...  00904199310033 
+0

Sie sagen, Sie eine Zeilennummer für jede Zeile mit einer TIN-Nummer zuordnen? Wenn ja, führe einfach eine update-Anweisung wie 'update T SET RowNum = RN VON (SELECT *, ROW_NUMBER() OVER (ORDER BY was auch immer) aus. RN FROM tblName WHERE ISNULL (TIN, '') <> '') T' .. Es gibt keine Notwendigkeit für "WHILE" Schleifen oder irgendetwas. – ZLK

Antwort

0
Update table 
Set row_number = tin 
Where tin != '' 

? 
+0

Nein, ich muss notieren –

+0

Sie können einige Informationen wie, wie es löst die obige Frage –

+0

Sorry - versuchen, spät in der Nacht zu helfen. bedeutete nicht, die Frage zu verwirren – Duncan

0

Wenn ich Sie richtig verstehe, das ist, was Sie brauchen:

DECLARE @COUNT INT; 
DECLARE @RNO INT; 
DECLARE @TIN VARCHAR(50); 
SET @COUNT = (SELECT COUNT * FROM TABLE); 

WHILE(@COUNT > 0) 
BEGIN 

SET @TIN = (SELECT TIN FROM TABLE WHERE RowNum = @COUNT); 
SET @RNO = (SELECT MAX(RowNum) FROM TABLE WHERE RowNum < @COUNT); 

IF(@TIN <> '') 
BEGIN 
UPDATE TABLE SET RowNum = (@RNO + 1) WHERE RowNum = @COUNT; 
END 
ELSE 
BEGIN 
UPDATE TABLE SET RowNum = 0 WHERE RowNum = @COUNT; 
END 

SET @COUNT = @COUNT - 1; 
END 
2

Sie verwenden können die folgenden Abfragen,

Für die Nummern zuweisen,

Update Alias SET RowNum = RN FROM (SELECT *, ROW_NUMBER() 
     OVER (ORDER BY Id) RN FROM YourTable WHERE ISNULL(TIN, '') <> '') Alias 

Für die NULL-Werte zuweisen,

Update YourTable SET RowNum = NULL WHERE ISNULL(TIN, '') = '' 

Fühlen Sie sich frei, eine Mitteilung für weitere Fragen zu verlassen.

+0

Ich habe Fehler - Abgeleitete Tabelle 'Alias' ist nicht aktualisierbar, weil eine Spalte der abgeleiteten Tabelle abgeleitet oder konstant ist. –

+0

@NursultanAidarkulov bedeutet das ... es hat nicht für Sie funktioniert! – Lucky

0

Ich denke, dies wird dazu beitragen, für u

select case when(isnull(TIN,'')='') then Null else Row_Number() over(order by TIN) end p,* from [Your_Table_Name] 
where TIN is not null 
union 
select '' p,* from [Your_Table_Name] 
where TIN is null 
Verwandte Themen