Author |
Topic |
last
Starting Member
25 Posts |
Posted - 2012-11-12 : 02:25:08
|
Hi All I have query here that return the result as in my attached image.DECLARE @FROM date;DECLARE @TO date;DECLARE @ASSIGNMENT varchar(50);SET @FROM = '2012-10-01';SET @TO = '2012-10-31';SET @ASSIGNMENT = 'Cabling';SELECT DISTINCT PROBM1.NUMBER, PROBM2.ASSIGNEE_FULL_NAME,PROBM2.SLA_BREACH,MAX(CK1.TOTAL) AS TOTALTIME, CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)<=4) THEN 1 ELSE 0 END AS UF, CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>4 AND DATEPART(HOUR,TOTAL)<=6) THEN 1 ELSE 0 END AS US , CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>6 AND DATEPART(HOUR,TOTAL)<=8) THEN 1 ELSE 0 END AS UE, CASE WHEN DATEPART(HOUR,TOTAL)>8 THEN 1 ELSE 0 END AS OEFROM PROBSUMMARYM1 AS PROBM1 INNER JOIN CLOCKSM1 AS CK1 ON PROBM1.NUMBER = CK1.KEY_CHAR INNER JOIN PROBSUMMARYM2 AS PROBM2 ON PROBM1.NUMBER = PROBM2.NUMBERWHERE (CK1.SCHEDULE = 'UPworkhours') AND (PROBM1.ASSIGNMENT = @ASSIGNMENT) AND (CONVERT(DATE,PROBM1.OPEN_TIME ,112)>= @FROM AND CONVERT(DATE,PROBM1.OPEN_TIME,112) <= @TO) AND PROBM1.NUMBER='IM479770' GROUP BY PROBM1.NUMBER,PROBM2.ASSIGNEE_FULL_NAME,PROBM2.SLA_BREACH,CK1.TOTAL RESULTNumber | Name |TOTALTIME |UF |US| UE |OEIM479770| Teane Nkane Mr|4000-01-01 00:00:00.000|1 | 0 | 0 |0IM479770| Teane Nkane Mr|4000-01-01 00:09:00.000|1 | 0 | 0 |0IM479770| Teane Nkane Mr|4000-01-01 02:52:52.000|1 | 0 | 0 |0IM479770| Teane Nkane Mr|4000-01-01 02:52:53.000|1 | 0 | 0 |0IM479770 Teane Nkane Mr|4000-01-01 03:01:52.000|1 | 0 | 0 |0I would like my result to look like suchNumber | Name |TOTALTIME |UF |US| UE |OEIM479770| Teane Nkane Mr|4000-01-01 03:01:52.000|1 | 0 | 0 |0 |
|
bandi
Master Smack Fu Yak Hacker
2242 Posts |
Posted - 2012-11-12 : 02:42:56
|
[code]SELECT NUMBER, ASSIGNEE_FULL_NAME, SLA_BREACH, MAX(TOTALTIME) MaxTime, UF, US, UE, OEFROM (SELECT DISTINCT PROBM1.NUMBER, PROBM2.ASSIGNEE_FULL_NAME, PROBM2.SLA_BREACH,MAX(CK1.TOTAL) AS TOTALTIME, CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)<=4) THEN 1 ELSE 0 END AS UF, CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>4 AND DATEPART(HOUR,TOTAL)<=6) THEN 1 ELSE 0 END AS US , CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>6 AND DATEPART(HOUR,TOTAL)<=8) THEN 1 ELSE 0 END AS UE, CASE WHEN DATEPART(HOUR,TOTAL)>8 THEN 1 ELSE 0 END AS OEFROM PROBSUMMARYM1 AS PROBM1 INNER JOIN CLOCKSM1 AS CK1 ON PROBM1.NUMBER = CK1.KEY_CHAR INNER JOIN PROBSUMMARYM2 AS PROBM2 ON PROBM1.NUMBER = PROBM2.NUMBERWHERE (CK1.SCHEDULE = 'UPworkhours') AND (PROBM1.ASSIGNMENT = @ASSIGNMENT) AND (CONVERT(DATE,PROBM1.OPEN_TIME ,112)>= @FROM AND CONVERT(DATE,PROBM1.OPEN_TIME,112) <= @TO) AND PROBM1.NUMBER='IM479770' GROUP BY PROBM1.NUMBER,PROBM2.ASSIGNEE_FULL_NAME,PROBM2.SLA_BREACH,CK1.TOTAL) tGROUP BY NUMBER, ASSIGNEE_FULL_NAME, SLA_BREACH, UF, US, UE, OE[/code](OR)[code];WITH cte AS (SELECT PROBM1.NUMBER, PROBM2.ASSIGNEE_FULL_NAME, PROBM2.SLA_BREACH, CK1.TOTAL , CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)<=4) THEN 1 ELSE 0 END AS UF, CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>4 AND DATEPART(HOUR,TOTAL)<=6) THEN 1 ELSE 0 END AS US , CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>6 AND DATEPART(HOUR,TOTAL)<=8) THEN 1 ELSE 0 END AS UE, CASE WHEN DATEPART(HOUR,TOTAL)>8 THEN 1 ELSE 0 END AS OE FROM PROBSUMMARYM1 AS PROBM1 INNER JOIN CLOCKSM1 AS CK1 ON PROBM1.NUMBER = CK1.KEY_CHAR INNER JOIN PROBSUMMARYM2 AS PROBM2 ON PROBM1.NUMBER = PROBM2.NUMBER WHERE (CK1.SCHEDULE = 'UPworkhours') AND (PROBM1.ASSIGNMENT = @ASSIGNMENT) AND (CONVERT(DATE,PROBM1.OPEN_TIME ,112)>= @FROM AND CONVERT(DATE,PROBM1.OPEN_TIME,112) <= @TO) AND PROBM1.NUMBER='IM479770' ) SELECT NUMBER, ASSIGNEE_FULL_NAME, SLA_BREACH, MAX(TOTAL) TOTALTime, UF, US, UE, OEFROM cte GROUP BY NUMBER, ASSIGNEE_FULL_NAME, SLA_BREACH, UF, US, UE, OE[/code]--Chandu |
|
|
last
Starting Member
25 Posts |
Posted - 2012-11-12 : 03:11:12
|
Hi Chandu Thank you for your response. It works well if there is an individual number put in there where clause but if I make it to select all available numbers it will return 2 of each.DECLARE @FROM date;DECLARE @TO date;DECLARE @ASSIGNMENT varchar(50);SET @FROM = '2012-10-01';SET @TO = '2012-10-31';SET @ASSIGNMENT = 'Cabling';SELECT NUMBER, ASSIGNEE_FULL_NAME, SLA_BREACH, MAX(TOTALTIME) MaxTime, UF, US, UE, OEFROM (SELECT DISTINCT PROBM1.NUMBER, PROBM2.ASSIGNEE_FULL_NAME, PROBM2.SLA_BREACH,MAX(CK1.TOTAL) AS TOTALTIME, CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)<=4) THEN 1 ELSE 0 END AS UF, CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>4 AND DATEPART(HOUR,TOTAL)<=6) THEN 1 ELSE 0 END AS US , CASE WHEN (DAY(TOTAL)-1=0 AND DATEPART(HOUR,TOTAL)>6 AND DATEPART(HOUR,TOTAL)<=8) THEN 1 ELSE 0 END AS UE, CASE WHEN DATEPART(HOUR,TOTAL)>8 THEN 1 ELSE 0 END AS OEFROM PROBSUMMARYM1 AS PROBM1 INNER JOIN CLOCKSM1 AS CK1 ON PROBM1.NUMBER = CK1.KEY_CHAR INNER JOIN PROBSUMMARYM2 AS PROBM2 ON PROBM1.NUMBER = PROBM2.NUMBERWHERE (CK1.SCHEDULE = 'UPworkhours') AND (PROBM1.ASSIGNMENT = @ASSIGNMENT) AND (CONVERT(DATE,PROBM1.OPEN_TIME ,112)>= @FROM AND CONVERT(DATE,PROBM1.OPEN_TIME,112) <= @TO) --AND PROBM1.NUMBER='IM479770' GROUP BY PROBM1.NUMBER,PROBM2.ASSIGNEE_FULL_NAME,PROBM2.SLA_BREACH,CK1.TOTAL) tGROUP BY NUMBER, ASSIGNEE_FULL_NAME, SLA_BREACH, UF, US, UE, OE IM479215 didata didata Mr t 4000-01-03 10:50:47.000 0 0 0 1IM479215 didata didata Mr t 4000-01-01 02:37:01.000 1 0 0 0IM479390 didata didata Mr t 4000-01-01 03:46:16.000 1 0 0 0IM479594 Kekana Johny Mr f 4000-01-01 05:15:24.000 0 1 0 0IM479594 Kekana Johny Mr f 4000-01-01 00:00:00.000 1 0 0 0IM480269 didata didata Mr t 4000-01-02 00:11:31.000 0 0 0 0IM481515 didata didata Mr t 4000-01-05 02:09:41.000 0 0 0 0IM482308 Kekana Johny Mr f 4000-01-01 20:58:29.000 0 0 0 1IM482308 Kekana Johny Mr f 4000-01-01 00:00:00.000 1 0 0 0 |
|
|
bandi
Master Smack Fu Yak Hacker
2242 Posts |
Posted - 2012-11-12 : 04:14:09
|
Try this once... here u will get UF, US, UE, and OE values based on maximum TOTALSELECT NUMBER, ASSIGNEE_FULL_NAME, SLA_BREACH, TOTALTIME, CASE WHEN (DAY(TOTALTIME)-1=0 AND DATEPART(HOUR,TOTALTIME)<=4) THEN 1 ELSE 0 END AS UF, CASE WHEN (DAY(TOTALTIME)-1=0 AND DATEPART(HOUR,TOTALTIME)>4 AND DATEPART(HOUR,TOTALTIME)<=6) THEN 1 ELSE 0 END AS US , CASE WHEN (DAY(TOTALTIME)-1=0 AND DATEPART(HOUR,TOTALTIME)>6 AND DATEPART(HOUR,TOTALTIME)<=8) THEN 1 ELSE 0 END AS UE, CASE WHEN DATEPART(HOUR,TOTALTIME)>8 THEN 1 ELSE 0 END AS OEFROM (SELECT PROBM1.NUMBER, PROBM2.ASSIGNEE_FULL_NAME, PROBM2.SLA_BREACH,MAX(CK1.TOTAL) AS TOTALTIME, FROM PROBSUMMARYM1 AS PROBM1 INNER JOIN CLOCKSM1 AS CK1 ON PROBM1.NUMBER = CK1.KEY_CHAR INNER JOIN PROBSUMMARYM2 AS PROBM2 ON PROBM1.NUMBER = PROBM2.NUMBER WHERE (CK1.SCHEDULE = 'UPworkhours') AND (PROBM1.ASSIGNMENT = @ASSIGNMENT) AND (CONVERT(DATE,PROBM1.OPEN_TIME ,112)>= @FROM AND CONVERT(DATE,PROBM1.OPEN_TIME,112) <= @TO) --AND PROBM1.NUMBER='IM479770' GROUP BY PROBM1.NUMBER,PROBM2.ASSIGNEE_FULL_NAME,PROBM2.SLA_BREACH ) t --Chandu |
|
|
|
|
|