You are on page 1of 6

SANNIHITHA TECHNOLOGIES - 8885586684

(1) How to find current date in SQL in AS/400 ?


SELECT CURDATE() FROM SYSIBM/SYSDUMMY1
(2) SELECT CURTIME() FROM SYSIBM/SYSDUMMY1
3) How to find Next day and previous day in SQL?
Find next day for current date (Current Date=12th May 2016)
SELECT CURDATE() + 1 DAY
FROM SYSIBM/SYSDUMMY1
Output: 05/13/16
3a)Find next day for any given date ?
SELECT DATE('02/01/2016') + 1 DAY
FROM SYSIBM/SYSDUMMY1
Output: 02/02/16
4) How to get current timestamp in SQL?
4A)SELECT CURRENT TIMESTAMP
FROM SYSIBM/SYSDUMMY1
OUTPUT : CURRENT TIMESTAMP
2016-05-12-13.30.22.474837
5) How can I fetch top 100 rows from a table table1 ?
5A) SELECT * FROM table1
FETCH FIRST 10 ROWS ONLY
6) How can I fetch 5th, 10th & 15th records of arrival sequenced file in SQL?
6A) SELECT * FROM table1
WHERE RRN(table1) IN (5,10,15)
7)How can I access 2nd member of multi-member file?
A)First of all, we create alias table which refers particular member of a file.
CREATE ALIAS AMIT001/TABLE1 FOR Lib1/FILE1(MEMBER2)
Now we can access 2nd member by below SQL statement.
SELECT * FROM AMIT001/TABLE1
8) How can I insert multiple rows with single INSERT statement ?
8A)INSERT INTO AMIT001/ACCOUNT VALUES ('P100000001',190,'1000000001','EUR'),
('P100000001',191,'1100000001','USD'),
('P100000002',191,'2000000001','USD')
9A)How can I create a table in SQL?
CREATE TABLE QTEMP/Table001
(FLD1 CHAR(2) NOT NULL,
FLD2 DEC(11,3) NOT NULL,
FLD3 CHAR(2) NOT NULL,
FLD4 CHAR(5) NOT NULL,
FLD5 DATE NOT NULL WITH DEFAULT CURRENT_DATE)

INSERT INTO TABLE002


(FLD1,FLD3,FLD4) VALUES ('IM','AB','JERRY')
Output
FLD1 FLD2 FLD3 FLD4 FLD5
IM .000 AB JERRY 09/10/16

1|Page
SANNIHITHA TECHNOLOGIES - 8885586684

10)How can I find duplicate record in a file ?


A)SELECT PARTY, ORG, ACCOUNT, CURR, COUNT(*)
FROM AMIT001/ACCOUNT
GROUP BY PARTY, ORG, ACCOUNT, CURR
HAVING COUNT(*) >1
Output:
If count(*) =2, then there are 2 row with repeating field values,
If count(*) =3, then there are 3 row with repeating field values,

11)What are the uses of CASE statement?


There are many uses of CASE statement:
(a) To divide the records into different category:

e.g.
SELECT EMPID, NAME, ADDR, CONTACT,
CASE
WHEN SEX = ‘M’ THEN ’MALE’
ELSE ’FEMALE’
END
FROM EMPLOYEE
(b) To find exceptional records:

SELECT ITEM_ID, PRICE


CASE
WHEN ITEM_COUNT = 0 THEN 0
ELSE TOTAL_PRICE/ ITEM_COUNT
END as UNIT_PRICE,
FROM ITEM
** Here if ITEM_COUNT=0, then UNIT_PRICE will be zero i.e. it will not give ‘Divide by zero’ error.

Q) What are the uses of CASE statement?


(a) To divide the records into different category
1)Eg :SELECT EMPID, NAME, ADDR, CONTACT,
CASE
WHEN SEX = ‘M’ THEN ’MALE’
ELSE ’FEMALE’
END
FROM EMPLOYEE

(b) To find exceptional records

SELECT ITEM_ID, PRICE


CASE
WHEN ITEM_COUNT = 0 THEN 0
ELSE TOTAL_PRICE/ ITEM_COUNT
END as UNIT_PRICE,
FROM ITEM

2|Page
SANNIHITHA TECHNOLOGIES - 8885586684

** Here if ITEM_COUNT=0, then UNIT_PRICE will be zero i.e. it will not give ‘Divide by zero’ error.

Q) How to find average of decimal numbers upto 2 decimal fraction?


A) SELECT AVG(BALANCE)
FROM AMIT001/ACCOUNT
WHERE PARTY='P100000001'

Here, we have the Average account balance with 23 decimal places in the output.To change it to 2
decimal places,we use DEC( ) function.
SELECT DEC(AVG(BALANCE),10,2)
FROM AMIT001/ACCOUNT
WHERE PARTY='P100000001'

Q) How to generate a new field as combination of fields in SQL result set?


We can concatenate fields with “||” symbol and can use TRIM
function to trim spaces while concatenating.
RTRIM
SELECT 'PARTY INFO :'||RTRIM(NAME)||' ('||ADDRESS ||')'
AS ADDRESS
FROM AMIT001/PARTY
output
ADDRESS
PARTY INFO :KOSARA (FLAT 101,LANE-22,PVR BUILDING )
PARTY INFO :HENRY PAL (FLAT 131,LANE-55,PVR BUILDING )
PARTY INFO :ROBIN (FLAT 333,LANE-66,PVR BUILDING )
PARTY INFO :KRISH (FLAT 444,LANE-64,PVR BUILDING )
PARTY INFO :SHAILIZA (FLAT 777,LANE-88,PVR BUILDING )
PARTY INFO :KUMAR DEV (FLAT 801,LANE-88, PVR BUILDING)

Q)How to combine Primary and secondary table?

PRIMARY Table: PARTY


PARTYID NAME PHONE ADDRESS
P100000001 KOSARA 40,442,222 FLAT 101,LANE-22,PVR BUILDING
P200000001 HENRY PAL 40,223,122 FLAT 131,LANE-55,PVR BUILDING
P300000001 ROBIN 40,334,342 FLAT 333,LANE-66,PVR BUILDING
P400000001 KRISH 40,222,222 FLAT 444,LANE-64,PVR BUILDING
P500000001 SHAILIZA 40,777,777 FLAT 777,LANE-88,PVR BUILDING
P600000001 KUMAR DEV 405,523,344 FLAT 801,LANE

SECONDARY Table: ACCOUNT

PARTY ORG ACCOUNT CURR BALANCE


P100000001 190 1000000001 USD 6,667.75
P100000001 191 1100000001 USD 4,444.75
P200000001 190 2000000001 EUR 1,122.05
P300000001 190 3000000001 EUR 1,002.05
P300000001 191 3100000001 EUR 10,205.00
P400000001 191 4000000001 EUR 5,102.05

3|Page
SANNIHITHA TECHNOLOGIES - 8885586684
P500000001 191 5000000001 EUR 9,020.50
P500000001 1 5100000001 EUR 555,555.00

There are different ways, we can join PRIMARY & SECONDARY TABLE
I. INNER JOIN

Non matching records of PRIMARY & SENCONDARY Table will be SKIPPED from the result set.
Only the matching records from both tables comes in the result set.

SELECT A.PARTYID, A.NAME, A.PHONE, A.ADDRESS, B.ORG, B.ACCOUNT, B.CURR,


B.BALANCE FROM AMIT001/PARTY A, AMIT001/ACCOUNT B
WHERE A.PARTYID = B.PARTY
Output :
PARTYID NAME PHONE ADDRESS ORG ACCOUNT CURR BALANCE
P100000001 KOSARA 40,442,222 FLAT 101,LANE-22,PVR BUILDING 190 1000000001 USD 6,667.75
P100000001 KOSARA 40,442,222 FLAT 101,LANE-22,PVR BUILDING 191 1100000001 USD 4,444.75
P200000001 HENRY PAL 40,223,122 FLAT 131,LANE-55,PVR BUILDING 190 2000000001 EUR 1,122.05
P300000001 ROBIN 40,334,342 FLAT 333,LANE-66,PVR BUILDING 190 3000000001 EUR 1,002.05
P300000001 ROBIN 40,334,342 FLAT 333,LANE-66,PVR BUILDING 191 3100000001 EUR 10,205.00
P400000001 KRISH 40,222,222 FLAT 444,LANE-64,PVR BUILDING 191 4000000001 EUR 5,102.05
P500000001 SHAILIZA 40,777,777 FLAT 777,LANE-88,PVR BUILDING 191 5000000001 EUR 9,020.50
P500000001 SHAILIZA 40,777,777 FLAT 777,LANE-88,PVR BUILDING 1 5100000001 EUR 555,555.00
******** End of data ********

II. LEFT OUTER JOIN


It selects all the records from PRIMARY table even if a match does not exist in the
SECONDARY table.
SELECT A.PARTYID, A.NAME, A.PHONE, A.ADDRESS, B.ORG, B.ACCOUNT, B.CURR, B.BALANCE
FROM AMIT001/PARTY A
LEFT OUTER JOIN AMIT001/ACCOUNT B
ON A.PARTYID = B.PARTY
Copyright © www.go4as400.com

o There are different ways, we can join PRIMARY & SECONDARY TABLE

I. INNER JOIN
Non matching records of PRIMARY & SENCONDARY Table will be SKIPPED from the result
set. Only the matching records from both tables comes in the result set.
SELECT A.PARTYID, A.NAME, A.PHONE, A.ADDRESS, B.ORG, B.ACCOUNT, B.CURR, B.BALANCE
FROM AMIT001/PARTY A, AMIT001/ACCOUNT B
WHERE A.PARTYID = B.PARTY
Output:
PARTYID NAME PHONE ADDRESS ORG ACCOUNT CURR BALANCE
P100000001 KOSARA 40,442,222 FLAT 101,LANE-22,PVR BUILDING 190 1000000001 USD 6,667.75
P100000001 KOSARA 40,442,222 FLAT 101,LANE-22,PVR BUILDING 191 1100000001 USD 4,444.75
P200000001 HENRY PAL 40,223,122 FLAT 131,LANE-55,PVR BUILDING 190 2000000001 EUR 1,122.05
P300000001 ROBIN 40,334,342 FLAT 333,LANE-66,PVR BUILDING 190 3000000001 EUR 1,002.05
P300000001 ROBIN 40,334,342 FLAT 333,LANE-66,PVR BUILDING 191 3100000001 EUR 10,205.00
P400000001 KRISH 40,222,222 FLAT 444,LANE-64,PVR BUILDING 191 4000000001 EUR 5,102.05
P500000001 SHAILIZA 40,777,777 FLAT 777,LANE-88,PVR BUILDING 191 5000000001 EUR 9,020.50
P500000001 SHAILIZA 40,777,777 FLAT 777,LANE-88,PVR BUILDING 1 5100000001 EUR 555,555.00
2)LEFT OUTER JOIN
It selects all the records from PRIMARY table even if a match does not exist in the
SECONDARY table.
SELECT A.PARTYID, A.NAME, A.PHONE, A.ADDRESS, B.ORG, B.ACCOUNT, B.CURR, B.BALANCE
FROM AMIT001/PARTY A
LEFT OUTER JOIN AMIT001/ACCOUNT B

4|Page
SANNIHITHA TECHNOLOGIES - 8885586684
ON A.PARTYID = B.PARTY
Output:
PARTYID NAME PHONE ADDRESS ORG ACCOUNT CURR BALANCE
P100000001 KOSARA 40,442,222 FLAT 101,LANE-22,PVR BUILDING 190 1000000001 USD 6,667.75
P100000001 KOSARA 40,442,222 FLAT 101,LANE-22,PVR BUILDING 191 1100000001 USD 4,444.75
P200000001 HENRY PAL 40,223,122 FLAT 131,LANE-55,PVR BUILDING 190 2000000001 EUR 1,122.05
P300000001 ROBIN 40,334,342 FLAT 333,LANE-66,PVR BUILDING 190 3000000001 EUR 1,002.05
P300000001 ROBIN 40,334,342 FLAT 333,LANE-66,PVR BUILDING 191 3100000001 EUR 10,205.00
P400000001 KRISH 40,222,222 FLAT 444,LANE-64,PVR BUILDING 191 4000000001 EUR 5,102.05
P500000001 SHAILIZA 40,777,777 FLAT 777,LANE-88,PVR BUILDING 191 5000000001 EUR 9,020.50
P500000001 SHAILIZA 40,777,777 FLAT 777,LANE-88,PVR BUILDING 1 5100000001 EUR 555,555.00
P600000001 KUMAR DEV 405,523,344 FLAT 801, LANE-88,PVR BUILDING - - - -

RIGHT OUTER JOIN

It selects all the records from SECONDARY table even if a match does not exist in the PRIMARY table.
SELECT A.PARTYID, A.NAME, A.PHONE, A.ADDRESS, B.ORG, B.ACCOUNT, B.CURR, B.BALANCE
FROM AMIT001/PARTY A
RIGHT OUTER JOIN AMIT001/ACCOUNT B ON A.PARTYID = B.PARTY
EXCEPTION JOIN
It selects all the records from SECONDARY table, which have no match in PRIMARY
table.
SELECT A.PARTYID, A.NAME, A.PHONE, A.ADDRESS, B.ORG, B.ACCOUNT, B.CURR, B.BALANCE
FROM AMIT001/PARTY A
EXCEPTION JOIN AMIT001/ACCOUNT B
ON A.PARTYID = B.PARTY
Output:
PARTYID NAME PHONE ADDRESS ORG ACCOUNT CURR BALANCE
P600000001 KUMAR DEV 405,523,344 FLAT 801,LANE-88,PVR BUILDING - - - -

CROSS JOIN
It maps PRIMARY table records with all records of secondary table.

SELECT A.PARTYID, A.NAME, A.PHONE, A.ADDRESS, B.ORG, B.ACCOUNT, B.CURR, B.BALANCE


FROM AMIT001/PARTY A
CROSS JOIN AMIT001/ACCOUNT B

1A) CURDATE ( )
04/19/16
2A)CURTIME ( )
13:51:35
3A) Find next day for current date (Current Date=12th May 2016)
SELECT CURDATE() + 1 DAY
FROM SYSIBM/SYSDUMMY1
4A) SELECT DATE('02/01/2016') + 1 DAY
FROM SYSIBM/SYSDUMMY1
5A) SELECT CURDATE() + 1 MONTH - DAY(CURDATE()) DAYS
FROM SYSIBM/SYSDUMMY1

5|Page
SANNIHITHA TECHNOLOGIES - 8885586684

Q) How can we search spool files?

A) WRKSPLF

A) Command to find spools related to a particular user

WRKSPLF SELECT(User_Name)

Command to find spools name that start with QPRT

WRKSPLF SELECT(*ALL *ALL *ALL *ALL *ALL QPRT*)

6|Page

You might also like