SQL (first and last record)
Hi All,
WITH t AS
SELECT 100 region_id, 1001 Client_Id, 'client 1' Client_Name, 1 Status_id, 'progress' Status_name, SYSDATE + 1 Start_Date, SYSDATE + 1 End_Date FROM dual UNION ALL
SELECT 100 region_id, 1001 Client_Id, 'client 1' Client_Name, 2 Status_id, 'hold' Status_name ,SYSDATE + 1 Start_Date, SYSDATE + 1 End_Datet FROM dual UNION ALL
SELECT 100 region_id, 1001 Client_Id, 'client 1' Client_Name, 3 Status_id ,'reject' Status_name, SYSDATE + 1 Start_Date, SYSDATE + 1 End_Date FROM dual UNION ALL
SELECT 200 region_id, 1002 Client_Id, 'client 2' Client_Name, 1 Status_id, 'progress' Status_name, SYSDATE + 1 Start_Date, SYSDATE + 1 End_Date FROM dual UNION ALL
SELECT 200 region_id, 1002 Client_Id, 'client 2' Client_Name, 2 Status_id, 'hold' Status_name ,SYSDATE + 1 Start_Date, SYSDATE + 1 End_Datet FROM dual UNION ALL
SELECT 200 region_id, 1002 Client_Id, 'client 2' Client_Name, 3 Status_id ,'reject' Status_name, SYSDATE + 1 Start_Date, SYSDATE + 1 End_Date FROM dual UNION ALL
SELECT 200 region_id, 1002 Client_Id, 'client 2' Client_Name, 3 Status_id ,'progress' Status_name, SYSDATE + 1 Start_Date, SYSDATE + 1 End_Date FROM dual
SELECT * FROM t;Desired output:
REGION_ID CLIENT_ID CLIENT_NAME STATUS_ID STATUS_NAME START_DATE END_DATE
100 1001 client 1 1 progress 9/3/2011 12:26 9/3/2011 12:26
100 1001 client 1 3 reject 9/3/2011 12:26 9/3/2011 12:26
200 1002 client 2 1 progress 9/3/2011 12:26 9/3/2011 12:26thanks,
Hi,
Like Sven, I don't understand why you only want one output row for client_id=1002. Also, I don't understand what order determine "first" and "last". It's hard to guess because so many of the columns have the same value on every row.
My best guess is that status_id plays a part in deciding who is "first" and "last", and that you don't want to include ties (multiple rows with a equal claim to being "first" or "last") in the output.
WITH got_analytics AS
SELECT t.* -- or whatever columns you want to display
, ROW_NUMBER () OVER ( PARTITION BY region_id
, client_id
, client_name
ORDER BY end_date
, start_date
, status_id
) AS a_num
, ROW_NUMBER () OVER ( PARTITION BY region_id
, client_id
, client_name
ORDER BY end_date DESC
, start_date DESC
, status_id DESC
) AS d_num
, COUNT (*) OVER ( PARTITION BY region_id
, client_id
, client_name
, end_date -- NOTE: no ORDER BY
, start_date
, status_id
) AS cnt
FROM t
-- WHERE ... -- if you need any filtering, this is where it goes
SELECT region_id, client_id, client_name, status_id, start_date, end_date
FROM got_analytics
WHERE ( a_num = 1
OR d_num = 1
AND cnt = 1
ORDER BY region_id, client_id, client_name, start_date, end_date, status_id
;If client_name and region_id depend on client_id, then you don't need to include them in the PARTITION BY clauses. Depending on your requirements, you may not want them in the PARTITION BY clauses even if they are independent of client_id. Then again, you may not want client_id in th PARTITION BY clauses. It all depends on what you're trying to do.
Similar Messages
-
Select first and last records in grouped results - Oracle 11g
Say I have the following information in an Oracle 11g table:
Qty
Production order
Date and time
20
00000000000000001
12-JAN-14 00:02
20
00000000000000001
12-JAN-14 00:05
20
00000000000000001
12-JAN-14 00:07
20
00000000000000001
13-JAN-14 00:09
30
00000000000000002
12-JAN-14 00:11
30
00000000000000002
12-JAN-14 00:15
30
00000000000000002
12-JAN-14 00:20
30
00000000000000002
14-JAN-14 00:29
I would like to write a query that would return the following:
Qty
Production order
First
Last
80
00000000000000001
12-JAN-14 00:02
13-JAN-14 00:09
120
00000000000000002
12-JAN-14 00:11
14-JAN-14 00:29
That is, the sum of the Qty column grouped by Production order, and the date/time of the first and last records for each Production order.
I came up with a query that yielded this result:
Qty
Production order
First
Last
80
00000000000000001
12-JAN-14 00:02
14-JAN-14 00:29
120
00000000000000002
12-JAN-14 00:02
14-JAN-14 00:29
Which means that the First and Last columns show the overall first and last date / time of the whole table. Please note that this is a dummy table. Sorry I am now allowed to write the actual query
I came up with since work policies do not allow me to share it. Also, I tried with windowing functions such as rank()and row_number() but my user does not have enough privileges to do so.
Any help or hints will be greatly appreciated.Due to the fact that Oracle does not record the rows in any particular order, it would be wrong that the "first date" would be the first row processed by the query.
Therefore you would have to supply some other column if you do not want to consider the table as ordered by date.
Also, any analytical functions will need you to supply the "order by" and if its the date, then just a simple query will do:
SQL>WITH Tab1 (Qty, Production_Order, Pdate)
2 AS (SELECT 20, '00000000000000001', TO_DATE ( '12-JAN-14 00:02', 'DD-MON-YY HH24:MI') FROM DUAL UNION ALL
3 SELECT 20, '00000000000000001', TO_DATE ( '12-JAN-14 00:05', 'DD-MON-YY HH24:MI') FROM DUAL UNION ALL
4 SELECT 20, '00000000000000001', TO_DATE ( '12-JAN-14 00:07', 'DD-MON-YY HH24:MI') FROM DUAL UNION ALL
5 SELECT 20, '00000000000000001', TO_DATE ( '13-JAN-14 00:09', 'DD-MON-YY HH24:MI') FROM DUAL UNION ALL
6 SELECT 30, '00000000000000002', TO_DATE ( '12-JAN-14 00:11', 'DD-MON-YY HH24:MI') FROM DUAL UNION ALL
7 SELECT 30, '00000000000000002', TO_DATE ( '12-JAN-14 00:15', 'DD-MON-YY HH24:MI') FROM DUAL UNION ALL
8 SELECT 30, '00000000000000002', TO_DATE ( '12-JAN-14 00:20', 'DD-MON-YY HH24:MI') FROM DUAL UNION ALL
9 SELECT 30, '00000000000000002', TO_DATE ( '14-JAN-14 00:29', 'DD-MON-YY HH24:MI') FROM DUAL)
10 SELECT SUM ( Qty), Production_Order, MIN ( Pdate), MAX ( Pdate)
11 FROM Tab1
12 GROUP BY Production_Order
13* ORDER BY Production_Order
SQL> /
SUM(QTY) PRODUCTION_ORDER MIN(PDATE) MAX(PDATE)
80 00000000000000001 12-Jan-2014 00:02:00 13-Jan-2014 00:09:00
120 00000000000000002 12-Jan-2014 00:11:00 14-Jan-2014 00:29:00 -
Format first and last record of result query
Hello
I have the following query
<tt>select 1 seq, 'This is First record' data from dual union all
select 2, 'Data ' || tname from tab union all
select 3, 'This was last record Last record' from dual
order by 1</tt>
When i spool this statement to a listfile with col seq noprint option i get:
This is First record
Data MLA_ACCESS_LIST
Data MLA_APPLICATIONS
Data MLA_VPD_PCK
Data MLA_VPD_TABLES
This was last record Last record
But i want:
This is First record MLA_ACCESS_LIST
Data MLA_APPLICATIONS
Data MLA_VPD_PCK
MLA_VPD_TABLES This was last record Last record
I tried it with 1 statement with usage of lead and lag, because first and last record have to differ from the other result records. But i get ORA-30484: missing window specification for this function
Is this possible with 1 statement or am i doomed to edit the results by myself?
Thanks Aukeselect case row_number() over (order by tname)
when 1 then 'This is the First record '
end || tname ||
case row_number() over (order by tname desc)
when 1 then ' This was the last record'
end
from tab
order by tname
hth -
Hi everybody,
I have problem with first and last record.How can I specified that current record is first and last record.
it means that is any statement exist that determine :System.first_record is equal to :System.last_record.
It's very emergancy.
Thanks for your attention and your help.
/ShivaYou can try this:
if :system.cursor_record = '1' and :system.last_record = 'TRUE' then
-- this is the only record in block
end if;
Hi everybody,
I have problem with first and last record.How can I specified that current record is first and last record.
it means that is any statement exist that determine :System.first_record is equal to :System.last_record.
It's very emergancy.
Thanks for your attention and your help.
/Shiva -
Fetch first and last record together
Hi All,
I want to fetch first and last records. I have done through ROWNUM, but I need some alternative ways, may be through RANK function.
Please help on this.
here sample data:
WITH t AS
(SELECT 100 sid, 'ABC' SNAME, 4 status_id, SYSDATE + 1/24 start_date FROM dual UNION ALL
SELECT 100 sid, 'ABC' SNAME, 5 status_id ,SYSDATE + 2/24 start_date FROM dual UNION ALL
SELECT 100 sid, 'ABC' SNAME, 6 status_id ,SYSDATE + 3/24 start_date FROM dual UNION ALL
SELECT 100 sid, 'ABC' SNAME, 7 status_id ,SYSDATE + 3/24 start_date FROM dual UNION ALL
SELECT 100 sid, 'ABC' SNAME, 8 status_id ,SYSDATE + 4/24 start_date FROM dual)
SELECT * FROM t ORDER BY start_date;Thanks,if you want all the info on the same row.
/* Formatted on 10/19/2011 7:06:50 AM (QP5 v5.149.1003.31008) */
WITH t AS (SELECT 100 sid,
'ABC' SNAME,
4 status_id,
SYSDATE + 1 / 24 start_date
FROM DUAL
UNION ALL
SELECT 100 sid,
'ABC' SNAME,
5 status_id,
SYSDATE + 2 / 24 start_date
FROM DUAL
UNION ALL
SELECT 100 sid,
'ABC' SNAME,
6 status_id,
SYSDATE + 3 / 24 start_date
FROM DUAL
UNION ALL
SELECT 100 sid,
'ABC' SNAME,
7 status_id,
SYSDATE + 3 / 24 start_date
FROM DUAL
UNION ALL
SELECT 100 sid,
'ABC' SNAME,
8 status_id,
SYSDATE + 4 / 24 start_date
FROM DUAL)
SELECT sid,
sname,
MIN (status_id) KEEP (DENSE_RANK FIRST ORDER BY start_date) min_status,
MIN (start_date) min_dt,
MAX (status_id) KEEP (DENSE_RANK FIRST ORDER BY start_date DESC)
max_status,
MAX (start_date) max_dt
FROM t
GROUP BY sid, sname
SID SNAME MIN_STATUS MIN_DT MAX_STATUS MAX_DT
100 ABC 4 10/19/2011 8:05:54 AM 8 10/19/2011 11:05:54 AMEdited by: pollywog on Oct 19, 2011 7:11 AM -
How to get the first and last record
Hai All
I have table called T1 and there are more than 8 lakhs records and i have a column called Timestamp so i need to get the first record value and time stampvalue and last record and time stamp value so that i can conclude that For Example
form 13 june to 15 june data are here
Kind Regards
SrikkanthMSomething like this can also indicate the first and last rows as you query...
SQL> select empno, ename, hiredate
2 ,case row_number() over (order by hiredate)
3 when 1 then 'First Row'
4 when count(*) over () then 'Last Row'
5 end as flag
6 from emp;
EMPNO ENAME HIREDATE FLAG
7369 SMITH 17/12/1980 00:00:00 First Row
7499 ALLEN 20/02/1981 00:00:00
7521 WARD 22/02/1981 00:00:00
7566 JONES 02/04/1981 00:00:00
7698 BLAKE 01/05/1981 00:00:00
7782 CLARK 09/06/1981 00:00:00
7844 TURNER 08/09/1981 00:00:00
7654 MARTIN 28/09/1981 00:00:00
7839 KING 17/11/1981 00:00:00
7900 JAMES 03/12/1981 00:00:00
7902 FORD 03/12/1981 00:00:00
7934 MILLER 23/01/1982 00:00:00
7788 SCOTT 19/04/1987 00:00:00
7876 ADAMS 23/05/1987 00:00:00 Last Row
14 rows selected.
SQL> -
Getting first and last records of sql using a analytical function query
hi all!
Thanks in advance for looking at my problem! I have a query that runs against a table that keep all records
of changes on another table (journal table kind of thing). I wrote a sql that would tell what the status of that
requisition was, what came next and its respective dates. However, that would bring a lot of rows. I only need
to see the first row and last couple say 3 last rows. How could I achieve that?
SELECT ano yr,
numero id,
jn_datetime,
status_siafi status,
lead(status_siafi) over(PARTITION BY ano, numero ORDER BY jn_datetime) next_status,
lead(jn_datetime) over(PARTITION BY ano, numero ORDER BY jn_datetime) date_next_status,
MAX(jn_datetime) over(PARTITION BY ano, numero) last_update,
MIN(jn_datetime) over(PARTITION BY ano, numero) first_update
FROM nl_compensado_jn
WHERE ano = '08'
AND numero = '113747'
GROUP BY ano,
numero,
jn_datetime,
status_siafi
YR ID JN_DATETI S N DATE_NEXT LAST_UPDA FIRST_UPD
08 113747 11-SEP-08 1 2 11-SEP-08 20-NOV-08 11-SEP-08
08 113747 11-SEP-08 2 3 12-SEP-08 20-NOV-08 11-SEP-08
08 113747 12-SEP-08 3 2 12-SEP-08 20-NOV-08 11-SEP-08
08 113747 12-SEP-08 2 3 15-SEP-08 20-NOV-08 11-SEP-08
08 113747 15-SEP-08 3 2 15-SEP-08 20-NOV-08 11-SEP-08
08 113747 15-SEP-08 2 3 16-SEP-08 20-NOV-08 11-SEP-08
08 113747 16-SEP-08 3 2 16-SEP-08 20-NOV-08 11-SEP-08
08 113747 16-SEP-08 2 3 17-SEP-08 20-NOV-08 11-SEP-08
08 113747 17-SEP-08 3 2 17-SEP-08 20-NOV-08 11-SEP-08
08 113747 17-SEP-08 2 3 18-SEP-08 20-NOV-08 11-SEP-08
08 113747 18-SEP-08 3 2 18-SEP-08 20-NOV-08 11-SEP-08
08 113747 18-SEP-08 2 3 19-SEP-08 20-NOV-08 11-SEP-08
08 113747 19-SEP-08 3 2 19-SEP-08 20-NOV-08 11-SEP-08
08 113747 19-SEP-08 2 3 23-SEP-08 20-NOV-08 11-SEP-08
08 113747 23-SEP-08 3 2 24-SEP-08 20-NOV-08 11-SEP-08
08 113747 24-SEP-08 2 3 25-SEP-08 20-NOV-08 11-SEP-08
08 113747 25-SEP-08 3 2 25-SEP-08 20-NOV-08 11-SEP-08
08 113747 25-SEP-08 2 3 26-SEP-08 20-NOV-08 11-SEP-08
08 113747 26-SEP-08 3 2 26-SEP-08 20-NOV-08 11-SEP-08
08 113747 26-SEP-08 2 3 29-SEP-08 20-NOV-08 11-SEP-08
08 113747 29-SEP-08 3 2 29-SEP-08 20-NOV-08 11-SEP-08
08 113747 29-SEP-08 2 3 02-OCT-08 20-NOV-08 11-SEP-08
08 113747 02-OCT-08 3 2 02-OCT-08 20-NOV-08 11-SEP-08
08 113747 02-OCT-08 2 3 03-OCT-08 20-NOV-08 11-SEP-08
08 113747 03-OCT-08 3 2 03-OCT-08 20-NOV-08 11-SEP-08
08 113747 03-OCT-08 2 3 06-OCT-08 20-NOV-08 11-SEP-08
08 113747 06-OCT-08 3 2 06-OCT-08 20-NOV-08 11-SEP-08
08 113747 06-OCT-08 2 3 07-OCT-08 20-NOV-08 11-SEP-08
08 113747 07-OCT-08 3 2 07-OCT-08 20-NOV-08 11-SEP-08
08 113747 07-OCT-08 2 3 08-OCT-08 20-NOV-08 11-SEP-08
08 113747 08-OCT-08 3 2 08-OCT-08 20-NOV-08 11-SEP-08
08 113747 08-OCT-08 2 3 09-OCT-08 20-NOV-08 11-SEP-08
08 113747 09-OCT-08 3 2 09-OCT-08 20-NOV-08 11-SEP-08
08 113747 09-OCT-08 2 3 10-OCT-08 20-NOV-08 11-SEP-08
08 113747 10-OCT-08 3 2 14-OCT-08 20-NOV-08 11-SEP-08
08 113747 14-OCT-08 2 3 15-OCT-08 20-NOV-08 11-SEP-08
08 113747 15-OCT-08 3 2 15-OCT-08 20-NOV-08 11-SEP-08
08 113747 15-OCT-08 2 3 16-OCT-08 20-NOV-08 11-SEP-08
08 113747 16-OCT-08 3 2 16-OCT-08 20-NOV-08 11-SEP-08
08 113747 16-OCT-08 2 3 17-OCT-08 20-NOV-08 11-SEP-08
08 113747 17-OCT-08 3 2 17-OCT-08 20-NOV-08 11-SEP-08
08 113747 17-OCT-08 2 3 21-OCT-08 20-NOV-08 11-SEP-08
08 113747 21-OCT-08 3 2 21-OCT-08 20-NOV-08 11-SEP-08
08 113747 21-OCT-08 2 3 22-OCT-08 20-NOV-08 11-SEP-08
08 113747 22-OCT-08 3 2 22-OCT-08 20-NOV-08 11-SEP-08
08 113747 22-OCT-08 2 3 23-OCT-08 20-NOV-08 11-SEP-08
08 113747 23-OCT-08 3 2 23-OCT-08 20-NOV-08 11-SEP-08
08 113747 23-OCT-08 2 3 27-OCT-08 20-NOV-08 11-SEP-08
08 113747 27-OCT-08 3 2 27-OCT-08 20-NOV-08 11-SEP-08
08 113747 27-OCT-08 2 3 28-OCT-08 20-NOV-08 11-SEP-08
08 113747 28-OCT-08 3 2 28-OCT-08 20-NOV-08 11-SEP-08
08 113747 28-OCT-08 2 3 29-OCT-08 20-NOV-08 11-SEP-08
08 113747 29-OCT-08 3 2 29-OCT-08 20-NOV-08 11-SEP-08
08 113747 29-OCT-08 2 3 30-OCT-08 20-NOV-08 11-SEP-08
08 113747 30-OCT-08 3 2 30-OCT-08 20-NOV-08 11-SEP-08
08 113747 30-OCT-08 2 3 31-OCT-08 20-NOV-08 11-SEP-08
08 113747 31-OCT-08 3 2 31-OCT-08 20-NOV-08 11-SEP-08
08 113747 31-OCT-08 2 3 03-NOV-08 20-NOV-08 11-SEP-08
08 113747 03-NOV-08 3 2 03-NOV-08 20-NOV-08 11-SEP-08
08 113747 03-NOV-08 2 3 06-NOV-08 20-NOV-08 11-SEP-08
08 113747 06-NOV-08 3 2 06-NOV-08 20-NOV-08 11-SEP-08
08 113747 06-NOV-08 2 3 07-NOV-08 20-NOV-08 11-SEP-08
08 113747 07-NOV-08 3 2 07-NOV-08 20-NOV-08 11-SEP-08
08 113747 07-NOV-08 2 3 10-NOV-08 20-NOV-08 11-SEP-08
08 113747 10-NOV-08 3 2 10-NOV-08 20-NOV-08 11-SEP-08
08 113747 10-NOV-08 2 3 12-NOV-08 20-NOV-08 11-SEP-08
08 113747 12-NOV-08 3 2 12-NOV-08 20-NOV-08 11-SEP-08
08 113747 12-NOV-08 2 3 13-NOV-08 20-NOV-08 11-SEP-08
08 113747 13-NOV-08 3 2 13-NOV-08 20-NOV-08 11-SEP-08
08 113747 13-NOV-08 2 3 14-NOV-08 20-NOV-08 11-SEP-08
08 113747 14-NOV-08 3 2 14-NOV-08 20-NOV-08 11-SEP-08
08 113747 14-NOV-08 2 3 17-NOV-08 20-NOV-08 11-SEP-08
08 113747 17-NOV-08 3 2 17-NOV-08 20-NOV-08 11-SEP-08
08 113747 17-NOV-08 2 3 18-NOV-08 20-NOV-08 11-SEP-08
08 113747 18-NOV-08 3 2 18-NOV-08 20-NOV-08 11-SEP-08
08 113747 18-NOV-08 2 2 18-NOV-08 20-NOV-08 11-SEP-08
08 113747 18-NOV-08 2 3 19-NOV-08 20-NOV-08 11-SEP-08
08 113747 19-NOV-08 3 2 19-NOV-08 20-NOV-08 11-SEP-08
08 113747 19-NOV-08 2 4 20-NOV-08 20-NOV-08 11-SEP-08
08 113747 20-NOV-08 4 20-NOV-08 11-SEP-08
80 rows selected.thanks!!!!!!!!!!!!!!!!!!!!!!!!!!!
gleisson henriquesorry!!!!! didn't notice that major detail!!!
insert into nl_compensado_jn values ('INS','LETICIA','11-SEP-08 15:08:27','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','1','');
insert into nl_compensado_jn values ('UPD','BELLA','19-SEP-08 07:43:20','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','18-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','15-SEP-08 07:45:54','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','12-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','11-SEP-08 15:34:30','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','11-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','16-SEP-08 13:48:38','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','16-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','18-SEP-08 07:44:12','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','17-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','16-SEP-08 07:38:29','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','15-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','19-SEP-08 16:13:20','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','19-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','18-SEP-08 15:33:59','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','18-SEP-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','15-SEP-08 15:35:52','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','15-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','02-OCT-08 07:51:38','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','29-SEP-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','26-SEP-08 08:11:04','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','25-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','29-SEP-08 15:46:31','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','29-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','29-SEP-08 12:12:29','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','26-SEP-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','08-OCT-08 07:44:06','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','07-OCT-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','09-OCT-08 07:44:43','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','08-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','03-OCT-08 07:44:57','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','02-OCT-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','06-OCT-08 07:41:19','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','03-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','17-SEP-08 07:35:00','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','16-SEP-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','03-OCT-08 15:17:09','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','03-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','23-SEP-08 16:05:01','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','19-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','25-SEP-08 07:37:44','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','24-SEP-08');
insert into nl_compensado_jn values ('UPD','GERENTE','26-SEP-08 15:57:35','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','26-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','24-SEP-08 15:31:40','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','24-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','12-SEP-08 08:02:34','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','11-SEP-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','09-OCT-08 15:04:27','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','09-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','17-SEP-08 15:31:46','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','17-SEP-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','07-OCT-08 07:51:57','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','06-OCT-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','07-OCT-08 15:04:54','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','07-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','02-OCT-08 15:49:48','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','02-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','25-SEP-08 15:36:45','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','25-SEP-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','06-OCT-08 15:00:08','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','06-OCT-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','08-OCT-08 14:57:23','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','08-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','12-SEP-08 15:31:47','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','12-SEP-08');
insert into nl_compensado_jn values ('UPD','BELLA','06-NOV-08 10:04:08','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','03-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','10-NOV-08 14:11:55','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','07-NOV-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','23-OCT-08 15:08:23','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','23-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','31-OCT-08 14:59:36','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','31-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','28-OCT-08 10:33:59','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','27-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','16-OCT-08 08:01:41','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','15-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','29-OCT-08 11:04:35','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','28-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','17-OCT-08 07:58:07','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','16-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','22-OCT-08 10:36:15','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','21-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','21-OCT-08 13:08:38','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','17-OCT-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','23-OCT-08 10:49:52','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','22-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','27-OCT-08 10:12:47','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','23-OCT-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','16-OCT-08 15:36:47','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','16-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','14-OCT-08 15:19:24','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','14-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','03-NOV-08 09:10:26','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','31-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','15-OCT-08 07:59:37','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','14-OCT-08');
insert into nl_compensado_jn values ('UPD','ANTUNES','10-OCT-08 11:25:23','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','09-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','03-NOV-08 16:01:49','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','03-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','29-OCT-08 15:13:36','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','29-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','22-OCT-08 15:25:48','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','22-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','30-OCT-08 10:22:24','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','29-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','30-OCT-08 15:15:47','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','30-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','17-OCT-08 15:19:19','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','17-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','06-NOV-08 16:08:43','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','06-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','31-OCT-08 10:42:10','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','30-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','07-NOV-08 16:01:50','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','07-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','21-OCT-08 15:34:07','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','21-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','27-OCT-08 15:22:24','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','27-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','28-OCT-08 15:16:19','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','28-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','15-OCT-08 15:15:54','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','15-OCT-08');
insert into nl_compensado_jn values ('UPD','BELLA','07-NOV-08 09:39:43','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','06-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','17-NOV-08 09:29:29','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','14-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','12-NOV-08 09:40:53','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','10-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','18-NOV-08 09:49:53','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','17-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','19-NOV-08 15:29:15','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084810','16660','2','19-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','10-NOV-08 15:25:03','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','10-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','13-NOV-08 09:10:07','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','12-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','14-NOV-08 10:33:24','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','3','13-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','12-NOV-08 15:32:54','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','12-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','17-NOV-08 15:37:10','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','17-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','19-NOV-08 09:14:38','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084810','16660','3','18-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','20-NOV-08 09:06:16','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084810','16660','4','19-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','14-NOV-08 15:19:03','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','14-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','18-NOV-08 15:47:14','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','18-NOV-08');
insert into nl_compensado_jn values ('UPD','BELLA','13-NOV-08 15:29:06','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084110','16660','2','13-NOV-08');
insert into nl_compensado_jn values ('UPD','HEBER','18-NOV-08 18:41:45','','TRIGER25','','08','113747','00','00003','84110','08','DV','540638','11-SEP-08','WX01208201001760084810','16660','2','18-NOV-08'); -
Getting first and last records of a query(on a table)
Hello,
i want to display the first and the last serial number(table: OBJK ) against a particulat matnr and obknr.
how do i display only the first and only the last record of my query ?
hope i am comprehendedable..
Thanks..
ShehryarSELECT min(sernr) max(sernr) into lfirst llast
from objk
where matnr = pmatnr
and obknr = pobknr.
---Lets say you already have the data in the internal table in that case..
SORT itab by SERNR.
read table itab index 1.
lfirst = itab-sernr.
sort itab by sernr descending.
read table itab index 1.
llast = itab-sernr.
Regards
Anurag
Message was edited by: Anurag Bankley
Message was edited by: Anurag Bankley -
Query : first and last 25 records of a table
Hi @ll,
i am going to write a query for a report. Therefor i need the first and last 25 records of a table. Does anyone got an idea for a solution ? I was trying to achieve this by using a WHERE clause. Here is a part of the query :
SELECT
TOP 10 T1.[ItemCode], DATEPART(mm, T1.[DocDate]) [.....]
FROM FROM INV1 T1
Where T1.[DocDate] >= Cast('2009 [......] AND
T1.ItemCode = (
SELECT TOP 10 T40.[ItemCode]
FROM DBO.OINM
WHERE Where T40.[DocDate] >= Cast('2009-04-01 00:00:00' AS datetime)
AND T40.[DocDate] <= Cast('2009-04-30 00:00:00' AS datetime)
GROUP BY T1.[ItemCode], DATEPART(mm, T40.[DocDate])
ORDER BY SUM(T1.[TotalSumSy]) ASC)
The where part i would use twice, once for ascending the other one for descending. But it does not work.
Any ideas ?
Regards SteffenHi,
Union was the keyword, that i was searching for. It is a nice way, but not practible.
We are using coresuite for generating reports, and there were a nice possibility to connect diffrent queries.
Thanks for your suggestion.
Regards Steffen -
How to find first and last date of a fiscal week using SQL
Hello,
I want information about FISCAL Week, means a Week based on ISO standard. I know format strings ‘IW’ or ‘IYYY’ gives fiscal week and fiscal year respectively from a given date. But I want to find the first and last date of a fiscal week. Say suppose I have a fiscal week is 2, and fiscal year is 2008, how to find the start and end date of the given fiscal week.
Any kind of help would be greatly appreciable.
Thanks,
Princedavide gislon wrote:
The following query evaluate the begin of a fisical week, where &year and &week are respectively the year and week you want to calculate.
To evaluate the end of the week you have to add 6.
Note that my database is set to have monday as day number 1 of the week, and sunday as day number 7; if your database settings are different you should modify the query accordingly.
SELECT CASE TO_CHAR(TO_DATE('&year','YYYY'),'D')
WHEN '1' THEN TO_DATE('&year','YYYY')+((&week-1)*7)
WHEN '2' THEN TO_DATE('&year','YYYY')+((&week-1)*7-1)
WHEN '3' THEN TO_DATE('&year','YYYY')+((&week-1)*7-2)
WHEN '4' THEN TO_DATE('&year','YYYY')+((&week-1)*7-3)
WHEN '5' THEN TO_DATE('&year','YYYY')+((&week-1)*7+3)
WHEN '6' THEN TO_DATE('&year','YYYY')+((&week-1)*7+2)
WHEN '7' THEN TO_DATE('&year','YYYY')+((&week-1)*7+1)
END BEGIN_FISICAL_WEEK
FROM DUAL
Hope this is helpful.
Cheers,
Davide
Edited by: davide gislon on 08-Jan-2009 07:19Your query does nothing you say it does. TO_DATE('&year','YYYY') returns first day of the current month for year &year. And the only reason it returns January 1, &year is that we are currently in January:
SQL> select TO_DATE('&year','YYYY') from dual
2 /
Enter value for year: 2005
old 1: select TO_DATE('&year','YYYY') from dual
new 1: select TO_DATE('2005','YYYY') from dual
TO_DATE('
01-JAN-05
SQL> As soon as we roll into February:
SQL> alter system set fixed_date = '2009-2-1' scope=memory
2 /
System altered.
SQL> select sysdate from dual
2 /
SYSDATE
01-FEB-09
SQL> select TO_DATE('&year','YYYY') from dual
2 /
Enter value for year: 2005
old 1: select TO_DATE('&year','YYYY') from dual
new 1: select TO_DATE('2005','YYYY') from dual
TO_DATE('
01-FEB-05
SQL> alter system set fixed_date = NONE scope=both
2 /
System altered.
SQL> select sysdate from dual
2 /
SYSDATE
08-JAN-09
SQL> But even if TO_DATE('&year','YYYY') would always return January 1, &year, or you would fix it to TO_DATE('0101&year','MMDDYYYY') it still would be wrong. ISO week rules are
If January 1 falls on a Friday, Saturday, or Sunday, then the week including January 1 is the last week of the previous year, because most of the days in the week belong to the previous year.
If January 1 falls on a Monday, Tuesday, Wednesday, or Thursday, then the week is the first week of the new year, because most of the days in the week belong to the new year.Therefore, next year:
SQL> DEFINE YEAR=2010
SQL> DEFINE WEEK=1
SQL> ALTER SESSION SET NLS_TERRITORY=GERMANY -- enforce Monday as first day of the week
2 /
Session altered.
SQL> SET VERIFY OFF
SQL> SELECT CASE TO_CHAR(TO_DATE('0101&&year','MMDDYYYY'),'D')
2 WHEN '1' THEN TO_DATE('0101&&year','MMDDYYYY')+((&&week-1)*7)
3 WHEN '2' THEN TO_DATE('0101&&year','MMDDYYYY')+((&&week-1)*7-1)
4 WHEN '3' THEN TO_DATE('0101&&year','MMDDYYYY')+((&&week-1)*7-2)
5 WHEN '4' THEN TO_DATE('0101&&year','MMDDYYYY')+((&&week-1)*7-3)
6 WHEN '5' THEN TO_DATE('0101&&year','MMDDYYYY')+((&&week-1)*7+3)
7 WHEN '6' THEN TO_DATE('0101&&year','MMDDYYYY')+((&&week-1)*7+2)
8 WHEN '7' THEN TO_DATE('0101&&year','MMDDYYYY')+((&&week-1)*7+1)
9 END BEGIN_FISICAL_WEEK
10 FROM DUAL
11 /
BEGIN_FI
04.01.10
SQL> SELECT TRUNC(TO_DATE('0101&&year','MMDDYYYY'),'IW') FROM DUAL
2 /
TRUNC(TO
28.12.09
SQL> 2 user10772980:
Use:
SELECT TRUNC(TO_DATE('0101&&year','MMDDYYYY'),'IW') + (&&week-1)*7 FISCAL_YEAR_&&YEAR._WEEK_&&WEEK
FROM DUAL
FISCAL_YEAR_2010_WEEK_1
28.12.09
SQL> SY. -
SQL Selecting the first and last entries for each day
Hello SQL experts,
I hope you can help with this.. I have a table (could have 1M or more rows in it) see structure below. I am looking to get the first and last date/times for each employee for each day. I also need the location GUID for the first read.
EmployeeGUID (uniqueidentifier datatype)
LocationGUID (uniqueidentifier datatype)
DateTime (DateTime datatype)
12345678-0000-0000-0000-000000000000
11111111-0000-0000-0000-000000000000
04/12/2014 07:00:01
12345678-0000-0000-0000-000000000000
22222222-0000-0000-0000-000000000000
04/12/2014 10:40:05
12345678-0000-0000-0000-000000000000
22222222-0000-0000-0000-000000000000
04/12/2014 17:04:02
44422222-0000-0000-0000-000000000000
22222222-0000-0000-0000-000000000000
04/14/2014 08:00:00
44422222-0000-0000-0000-000000000000
22222222-0000-0000-0000-000000000000
04/14/2014 14:00:03
44422222-0000-0000-0000-000000000000
33333333-0000-0000-0000-000000000000
04/15/2014 07:49:00
44422222-0000-0000-0000-000000000000
11111111-0000-0000-0000-000000000000
04/15/2014 09:00:01
This would be the ideal output (I can do without the TotalTimeInHours):
EmployeeGUID (uniqueidentifier datatype)
LocationGUID (uniqueidentifier datatype)
FirstRead (DateTime datatype)
LastRead (DateTime datatype)
TotalTimeInHours
12345678-0000-0000-0000-000000000000
11111111-0000-0000-0000-000000000000
04/12/2014 07:00:01
04/12/2014 17:04:02
Total in hours between the first and last read.
44422222-0000-0000-0000-000000000000
22222222-0000-0000-0000-000000000000
04/14/2014 08:00:00
04/14/2014 14:00:03
44422222-0000-0000-0000-000000000000
33333333-0000-0000-0000-000000000000
04/15/2014 07:49:00
04/15/2014 09:00:01
I would post what I have tried so far but I have been trying many different types of queries over the last few days. In short I need the employees first and last reads for each date. They could have many entries per date or just 1. I am certain that this
is a trivial thing for a SQL expert but not trivial for me :).
Thank you in advance!Thank you!
This is almost what I need. The LocationGUID has to be included in the output. When I include it, I have to put it in the Group By clause. When I do that the reads are based on the LocationGUID (see below).
** I added a few more data entries and included the LocationGUID in the output.
***** SQL ***********
CREATE TABLE test( EmployeeGUID uniqueidentifier, LocationGUID uniqueidentifier, DateTimeCol DateTime )Insert into test values
('12345678-0000-0000-0000-000000000000','11111111-0000-0000-0000-000000000000','04/12/2014 07:00:01')
,('12345678-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/12/2014 10:40:05')
,('12345678-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/12/2014 17:04:02')
,('12345678-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/12/2014 19:00:00')
,('44422222-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/14/2014 08:00:00')
,('44422222-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/14/2014 14:04:03')
,('44422222-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/15/2014 07:49:00')
,('44422222-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/15/2014 09:00:01')
,('12345678-0000-0000-0000-000000000000','11111111-0000-0000-0000-000000000000','04/13/2014 10:40:05')
,('12345678-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/13/2014 17:04:02')
,('12345678-0000-0000-0000-000000000000','22222222-0000-0000-0000-000000000000','04/13/2014 19:00:00')
;with mycte as (
SELECT *, row_number() OVER(partition by EmployeeGUID, Cast(DateTimeCol as date) Order by DateTimeCol) rnASC,
row_number() OVER (partition by EmployeeGUID, Cast(DateTimeCol as date) Order by DateTimeCol DESC) rnDESC
FROM test)
Select EmployeeGUID ,Cast(DateTimeCol as date) dt,LocationGUID,
Max(Case when rnASC=1 Then DateTimeCol End) minDateTimeCol
,Max(Case when rnDESC=1 Then DateTimeCol End ) maxDateTimeCol
,Datediff(minute, Max(Case when rnASC=1 Then DateTimeCol End) ,Max(Case when rnDESC=1 Then DateTimeCol End ) )/60.0 TotalTimeInHours
from mycte
Group by EmployeeGUID, LocationGUID,Cast(DateTimeCol as date)
Order by dt,EmployeeGUID
drop TABLE test
**** OUTPUT **********
EmployeeGUID
dt
LocationGUID
minDateTimeCol
maxDateTimeCol
TotalTimeInHours
12345678-0000-0000-0000-000000000000
2014-04-12
11111111-0000-0000-0000-000000000000
2014-04-12 07:00:01.000
NULL
NULL
12345678-0000-0000-0000-000000000000
2014-04-12
22222222-0000-0000-0000-000000000000
NULL
2014-04-12 19:00:00.000
NULL
12345678-0000-0000-0000-000000000000
2014-04-13
11111111-0000-0000-0000-000000000000
2014-04-13 10:40:05.000
NULL
NULL
12345678-0000-0000-0000-000000000000
2014-04-13
22222222-0000-0000-0000-000000000000
NULL
2014-04-13 19:00:00.000
NULL
44422222-0000-0000-0000-000000000000
2014-04-14
22222222-0000-0000-0000-000000000000
2014-04-14 08:00:00.000
2014-04-14 14:04:03.000
6.066666 -
How can I display the first and last name using a paramater as employee ID?
Hi SAP,
I have a parameter that is called {? Employee ID}. What I want to do is display the first and last name based on the employee ID value entered in {? Employee ID} in the page header of the report. Right now, when I put the following formula in the page header only some pages get the right result while other pages dont....
if table.employeeid = {? Employee ID} then
table.firstname" "table.lastname
It appears as though if the first record in the details section on the beginning of each page happens to be the employee under {? Employee ID} then it prints it correctly, if it isn't I get a null value in the page header.
Anyone have any ideas?
ZHi Try this,
Whileprintingrecords;
if ={?EmpID} then
Also check the option "Default values for null" in the formula editor.
Regards,
Vinay -
Finding first and last members of a group set
Is there any example how to use 'first' and 'last' functions in an sql query ?
I have tried to execute a query like this on the scott.emp table :
select deptno,min(sal),max(sal),first(sal) from emp group by deptno;
but I always get this message:
ERROR at line 1:
ORA-00904: "FIRST": invalid identifier
btw I use Oracle RDBMS ver 9.1.0.3 for Solaris in my server.
tx for your help
sjarifSyarif,
The FIRST and LAST functions, which became available with 9i, are used to find the first or last member of a ranked set. I'm not sure exactly what you are trying to do, but I can show you a query that should work (I don't have 9i handy at the moment). This query should give you the departments with the highest (first) and lowest (last) aggregate salaries:
select deptno,
min(deptno)
keep (dense_rank first order by sum(sal) desc) highest_sal,
min(deptno)
keep (dense_rank last order by sum(sal) desc) lowest_sal
from emp
group by deptno
Is there any example how to use 'first' and 'last' functions in an sql query ?
I have tried to execute a query like this on the scott.emp table :
select deptno,min(sal),max(sal),first(sal) from emp group by deptno;
but I always get this message:
ERROR at line 1:
ORA-00904: "FIRST": invalid identifier
btw I use Oracle RDBMS ver 9.1.0.3 for Solaris in my server.
tx for your help
sjarif -
Address book in Leopard does not have the Swap First Name with Last Name in the drop down menu on the desk top tool bar. All my addresses are indexed with last name first, and I want to continue to keep my records this way. Does anyone know where the Swap First and Last Name control is in Leopard Address Book? Thanks
Hi:
The menu items have been renamed somewhat in Leopard. I don't have Leopard in front of me at the moment, but this option should still be available on a per-card basis (or per a selection of cards) within Address Book's Card menu. And the global setting in preferences will affect all of the cards that don't have this setting customized individually. -
E-Recruitment business partner objects missing First and Last Name
Hi,
We are on Netweaver 2004s and ERecruitment EHP3...it's installed on production but not activated. We are finding a bunch of BP records that exist where there is no First and Last Name on them, however the CP object does have this data. We can't figure out what is causing this to happen to some candidates? It appears to only be the case on External/Unregistered Candidates.
Thanks,
MichelleHi Michelle,
could you share the number of the note?
Kind regards
Roman
Maybe you are looking for
-
Problems completing backup to icloud from iphone
"There was a problme completing the backup. Please try again later. Last Backup : Never " THE ABOVE IS THE MESSAGE WHEN EVER I USED iCLOUD TO DO BACKUP ON MY IPHONE. IT HAS NEVER BEEN SUCEESSFUL. I TRY MANY ATTEMPTS AT DIFFER
-
HP Officejet Pro L7590 Windows XP We are having a problem with dot scrubber that appears each friday morning. It backs up something. We are not sure what. It slows down the computer for at least 20 minutes. Is this necessary to have on the computer?
-
Itunes freezes when transferring purchases from ipad
Can 't trasfer purchases or syng my ipad with itunes, it just freezes
-
Top Link Special Considerations in moving to Cost Based Optimizer....
Our current application architecture consists of running a Java based application with Oracle 9i as the database and toplink as the object relational mapping tool. This is a hosted application about 5 years old with stringent SLA requirements and hig
-
Respected sir, What is mean by "analyzing Function Input" and explain the role of ABAPer in it. Its very urgent.