Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
scelamko
Constraint Violating Yak Guru
309 Posts |
Posted - 2008-04-29 : 18:30:16
|
| Guys,I have following scenario where I need to populate version flag based on the partyid, count and seq columns.Here is it how it should populate for each new count of a partyid the max(seq) should be versioned as 1For examplePARTY COUNT SEQ VERSION_________________________________________________100 1 1 1101 1 1 0101 1 2 1101 2 1 0101 2 2 0101 2 3 1102 3 1 1Is there any way to populate this version flag.Any sugggestions and inputs would helpThanks |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2008-04-30 : 02:27:03
|
[code]DECLARE @Sample TABLE (Party TINYINT, Count TINYINT, Seq TINYINT, Version TINYINT)INSERT @SampleSELECT 100, 1, 1, NULL UNION ALLSELECT 101, 1, 1, NULL UNION ALLSELECT 101, 1, 2, NULL UNION ALLSELECT 101, 2, 1, NULL UNION ALLSELECT 101, 2, 2, NULL UNION ALLSELECT 101, 2, 3, NULL UNION ALLSELECT 102, 3, 1, NULLSELECT *FROM @SampleUPDATE sSET s.Version = 1 - SIGN(RecID - 1)FROM ( SELECT Version, ROW_NUMBER() OVER (PARTITION BY Party, Count ORDER BY Seq DESC) AS RecID FROM @Sample ) AS sSELECT *FROM @Sample[/code] E 12°55'05.25"N 56°04'39.16" |
 |
|
|
scelamko
Constraint Violating Yak Guru
309 Posts |
Posted - 2008-05-02 : 15:23:21
|
| Thanks PesoBased on version flag, I am also trying to populate an ID column with following values.PARTY COUNT SEQ VERSION ID_________________________________________________100 1 1 1 1101 1 1 0 2101 1 2 1 2101 2 1 0 3101 2 2 0 3101 2 3 1 3102 3 1 1 4But my procedure doesnt seem to do the trick since I am using version flag = 1 is there any to achieve thiscreate PROCEDURE [dbo].[ntest] ASDECLARE @totalRecords INTDECLARE @ctr INT, @key INT, @subID INTSET @ctr = 1--- get the last igrp ID SELECT @key = 0 -- gets the total recordsSELECT @totalRecords = MAX([ID]) from criminal_disposition_caa44040WHILE @ctr <= @totalRecords BEGIN ---- Get the SubID SELECT @subID = VERSION FROM criminal_disposition_caa44040 WHERE [ID] = @ctr ---- Increment the Key if SubID = 1 IF @subID = 1 SET @key = @key + 1 ---- Updates the Table UPDATE criminal_disposition_caa44040 SET iid = @key WHERE [ID] = @ctr --increment the counter SET @ctr = @ctr + 1 END |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2008-05-02 : 16:26:31
|
[code]UPDATE sSET s.Version = 1 - SIGN(s.RecID - 1), s.ID = s.vIDFROM ( SELECT Version, ROW_NUMBER() OVER (PARTITION BY Party, Count ORDER BY Seq DESC) AS RecID, ID, DENSE_RANK() OVER (ORDER BY Party, Count) AS vID FROM @Sample ) AS s[/code] E 12°55'05.25"N 56°04'39.16" |
 |
|
|
|
|
|
|
|