DB2 UDB V7 (Sequence Number)
Â
This tip provided by Experts Exchange.
Â
Question:
How can I add a sequence number to a target table based onone of its column’s values being the same?
Example:
SourceTable:
Invoice_Nb
———-
1
1
1
2
2
3
4
Desired TargetTable:
Invoice_Nb      Line_Nb
———- Â Â Â Â Â ——–
1Â Â Â Â Â Â Â Â Â Â Â Â Â Â 1
1Â Â Â Â Â Â Â Â Â Â Â Â Â Â 2
1Â Â Â Â Â Â Â Â Â Â Â Â Â Â 3
2Â Â Â Â Â Â Â Â Â Â Â Â Â Â 1
2Â Â Â Â Â Â Â Â Â Â Â Â Â Â 2
3Â Â Â Â Â Â Â Â Â Â Â Â Â Â 1
4Â Â Â Â Â Â Â Â Â Â Â Â Â Â 1
I have tried the following command, but get all Line_nb’s equal to 1. (I assumebecause the inserts
are not committed until the end.)
Insert Into TargetTable
Select
  Invc_Nb,
  Case
     When (Select Max(Line_Nb) + 1
           FromTartetTable
           WhereSource.Invc_Nb = Target.Invc_Nb) is
                                         nullthen 1
     Else (Select Max(Line_Nb) + 1
           FromTartetTable
           WhereSource.Invc_Nb = Target.Invc_Nb)
  End,
From SourceTable
Â
Accepted Answer:
INSERT INTO TargetTable
SELECT Invc_Nb, ROW_NUMBER() OVER (PARTITION BY Invc_Nb ORDER BY Invc_Nb) ASLine_Nb FROM SourceTable;
For further information on this type of query check under the OLAP functionallyin the DB2 Help.
Â
Comment:
That is SO COOL! Thanks for the “OLAP Functions in DB2Help” suggestion as well.
Â
Written on 2/07/2001
Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.























