| Author |
Topic |
|
Ranjit.ileni
Posting Yak Master
183 Posts |
Posted - 2012-05-28 : 03:29:03
|
| Hi ,here is the detailsCREATE TABLE SAMPLE(SOURCE_FILE_ID INT,CYCLE_ID INT,TASK_ID INT ,TASK_STATE_DESC VARCHAR(100))INSERT INTO SAMPLESELECT 22,1,1,'Valid' UNION ALLSELECT 22,1,2,'Error' UNION ALLSELECT 22,1,3,'Error' UNION ALL SELECT 22,1,4,'Setup Fail' UNION ALLSELECT 22,1,5,'Setup Fail' UNION ALLSELECT 22,1,6,'Error' UNION ALLSELECT 22,1,7,'Setup Fail' UNION ALLSELECT 22,1,8,'Error' UNION ALLSELECT 22,1,9,'Error' UNION ALLSELECT 22,1,10,'Setup Fail' UNION ALLSELECT 22,2,1,'Valid' UNION ALLSELECT 22,2,2,null UNION ALLSELECT 22,2,3,'Error' UNION ALL SELECT 22,2,4,null UNION ALLSELECT 22,2,5,'Setup Fail' UNION ALLSELECT 22,2,6,'Error' UNION ALLSELECT 22,2,7,'Setup Fail' UNION ALLSELECT 22,2,8,'Error' UNION ALLSELECT 22,2,9,'Error' UNION ALLSELECT 22,2,10,'Setup Fail' UNION ALLSELECT 22,3,1,'Valid' UNION ALLSELECT 22,3,2,null UNION ALLSELECT 22,3,3,'Error' UNION ALL SELECT 22,3,4,null UNION ALLSELECT 22,3,5,'Setup Fail' UNION ALLSELECT 22,3,6,'Error' UNION ALLSELECT 22,3,7,'Setup Fail' UNION ALLSELECT 22,3,8,'Error' UNION ALLSELECT 22,3,9,'Error' UNION ALLSELECT 22,3,10,'Setup Fail' UNION ALLselect * from SAMPLEI need to write a qurey to select all the records having TASK_STATE_DESC='Error' and Next subsequent tasks if it is satisfied the condition TASK_STATE_DESC='Setup fail' here Every cycle will have 10 tasks (i.e., 1,2 ... 10)-- Expected output. --- from cycle122 1 2 Error22 1 3 Error22 1 4 Setup Fail22 1 5 Setup Fail22 1 6 Error22 1 7 Setup Fail22 1 8 Error22 1 9 Error22 1 10 Setup Fail-- from cycle213 22 2 3 Error16 22 2 6 Error17 22 2 7 Setup Fail18 22 2 8 Error19 22 2 9 Error20 22 2 10 Setup Failin the above list the task_id 5 have to miss in select list becasue the previous task not having Error as TASK_STATE_DESCand task_id 4 also should miss because it is having Null as TASK_STATE_DESC-- from cycle 322 3 3 Error22 3 6 Error22 3 7 Setup Fail22 3 8 Error22 3 9 Error22 3 10 Setup Fail-- the above select in the above list the task_id 5 have to miss in select list becasue the previous task not having Error as TASK_STATE_DESCand task_id 2,4 also should miss because it is having Null as TASK_STATE_DESCPlease help me Thanks,--Irk |
|
|
malpashaa
Constraint Violating Yak Guru
264 Posts |
Posted - 2012-05-28 : 04:39:17
|
Try something like this:SELECT S.SOURCE_FILE_ID, S.CYCLE_ID, S.TASK_ID, S.TASK_STATE_DESC FROM SAMPLE AS S WHERE S.TASK_STATE_DESC = 'Error' UNION ALLSELECT S.SOURCE_FILE_ID, S.CYCLE_ID, S.TASK_ID, S.TASK_STATE_DESC FROM SAMPLE AS S WHERE S.TASK_STATE_DESC = 'Setup Fail' AND EXISTS(SELECT * FROM SAMPLE AS S2 WHERE S2.SOURCE_FILE_ID = S.SOURCE_FILE_ID AND S2.CYCLE_ID = S.CYCLE_ID AND S2.TASK_ID = S.TASK_ID - 1 AND S2.TASK_STATE_DESC IN ('Error', 'Setup Fail'))For us, there is only the trying. The rest is not our business. ~T.S. EliotMuhammad Al Pasha |
 |
|
|
Ranjit.ileni
Posting Yak Master
183 Posts |
Posted - 2012-05-28 : 05:31:57
|
quote: AND S2.TASK_ID = S.TASK_ID - 1 AND S2.TASK_STATE_DESC IN ('Error', 'Setup Fail'))[/code]
In some cases your query will fail: -- sample data for cycle 4 SOURCE_FILE_ID CYCLE_ID TASK_ID TASK_STATE_DESC22 4 1 Valid22 4 2 Setup Fail22 4 3 Error22 4 4 Setup Fail22 4 5 Setup Fail22 4 6 NULL22 4 7 Setup Fail22 4 8 Setup Fail22 4 9 Error22 4 10 Setup Fail -- My Expected Output 22 4 3 Error22 4 4 Setup Fail22 4 5 Setup Fail22 4 9 Error22 4 10 Setup Fail -- But your query will select 22 4 3 Error22 4 4 Setup Fail22 4 5 Setup Fail22 4 8 Setup Fail ( In Valid Record)22 4 9 Error22 4 10 Setup FailEven though the task_id 6 does not contains TASK_STATE_DESC='Error 'I need to select the records [TASK_STATE_DESC] containing a string ='Error ' and the subsequent Failed tasks with STG_xxx_TASK_STATE_DATA [TASK_STATE_DESC] containing a string 'Setup fail'--Irk |
 |
|
|
malpashaa
Constraint Violating Yak Guru
264 Posts |
Posted - 2012-05-28 : 05:46:57
|
Then try something like this:WITH CTE AS( SELECT S.SOURCE_FILE_ID, S.CYCLE_ID, S.TASK_ID, S.TASK_STATE_DESC FROM SAMPLE AS S WHERE S.TASK_STATE_DESC = 'Error' UNION ALL SELECT Curr.SOURCE_FILE_ID, Curr.CYCLE_ID, Curr.TASK_ID, Curr.TASK_STATE_DESC FROM CTE AS Prev INNER JOIN SAMPLE AS Curr ON Curr.SOURCE_FILE_ID = Prev.SOURCE_FILE_ID AND Curr.CYCLE_ID = Prev.CYCLE_ID AND Curr.TASK_ID = Prev.TASK_ID + 1 WHERE Curr.TASK_STATE_DESC = 'Setup Fail')SELECT SOURCE_FILE_ID, CYCLE_ID, TASK_ID, TASK_STATE_DESC FROM CTEOPTION(MAXRECURSION 0); For us, there is only the trying. The rest is not our business. ~T.S. EliotMuhammad Al Pasha |
 |
|
|
Ranjit.ileni
Posting Yak Master
183 Posts |
Posted - 2012-05-28 : 06:50:04
|
| Thanks working fine ,Now I need to Convert above code into NETEZZA Sql ..--Irk |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-05-28 : 14:53:50
|
quote: Originally posted by Ranjit.ileni Thanks working fine ,Now I need to Convert above code into NETEZZA Sql ..--Irk
you can try in some NETEZZA forums for thathttp://www.topix.com/forum/com/netezza------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
|
|
|