| Author |
Topic |
|
inbs
Aged Yak Warrior
860 Posts |
Posted - 2010-03-09 : 02:45:51
|
i have this table, and i want to sign the slow rows(flag)(the problem is when i have 2 rows with same days ,if i have the most slow rows i dont care who sign,he can sign the first most slow rows like C and B)OrderNumber OrderRow DAYSA 1 10A 2 1B 1 20B 2 20B 3 5C 1 5C 2 10C 3 10 i want to getOrderNumber OrderRow DAYS flagA 1 10 1A 2 1 0B 1 20 1 B 2 20 0B 3 5 0C 1 5 0 C 2 10 1C 3 10 0 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2010-03-09 : 03:05:53
|
| SELECT OrderNumber, OrderRow, DAYS, case when flag=1 then 1 else 0 end as flag from(select OrderNumber, OrderRow, DAYS, row_number() over(partition by OrderNumber, OrderRow order by DAYS desc) as flag from your_table) as torder by OrderNumber, OrderRow, DAYSMadhivananFailing to plan is Planning to fail |
 |
|
|
inbs
Aged Yak Warrior
860 Posts |
Posted - 2010-03-09 : 03:08:31
|
| madhivanancan you translate it sql 2000(i use sql 2000 for this query) |
 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2010-03-09 : 03:28:04
|
quote: Originally posted by inbs madhivanancan you translate it sql 2000(i use sql 2000 for this query)
Why did you post in 2005 forum?Try thisselect t1.OrderNumber, t1.OrderRow, case when t2.DAYS is null then 0 else 1 end as flag from your_table as t1 left outer join(select OrderNumber, OrderRow, max(DAYS) as DAYS from your_tablegroup by OrderNumber, OrderRow) as t2on t1.OrderNumber=t2.OrderNumber and t1.OrderRow=t2.OrderRowMadhivananFailing to plan is Planning to fail |
 |
|
|
inbs
Aged Yak Warrior
860 Posts |
Posted - 2010-03-09 : 03:39:40
|
| thanks madhivananthe internal query is wrong (by my example)select OrderNumber, OrderRow, max(DAYS) as DAYS from your_tablegroup by OrderNumber, OrderRownever mind i think that i figure it out. |
 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2010-03-09 : 03:41:18
|
quote: Originally posted by inbs thanks madhivananthe internal query is wrong (by my example)select OrderNumber, OrderRow, max(DAYS) as DAYS from your_tablegroup by OrderNumber, OrderRownever mind i think that i figure it out.
Ok. Post the workable codeMadhivananFailing to plan is Planning to fail |
 |
|
|
inbs
Aged Yak Warrior
860 Posts |
Posted - 2010-03-09 : 06:45:00
|
| SELECT s.OrderNo,Min(s.OrderRow) AS OrderRowINTO #TempSlowRowFROM MYTABLE s JOIN (SELECT OrderNo,MAX(TotalDays) AS TotalDays FROM MYTABLE GROUP BY OrderNo) f ON (s.OrderNo=f.OrderNo AND s.DAYS=f.DAYS)GROUP BY s.OrderNonext row update the flag (SlowRow),UPDATE sSET SlowRow=1FROM MYTABLE s JOIN #TempSlowRow t ON (s.OrderNo=t.OrderNo AND s.OrderRow=t.OrderRow) |
 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2010-03-09 : 09:05:23
|
| Ok. Why dont you do it as a SELECT statement as I specified? If you want to update the table, you need to update it everytime the data are addedMadhivananFailing to plan is Planning to fail |
 |
|
|
|