Professional Documents
Culture Documents
Teradata SQL Scenarios1
Teradata SQL Scenarios1
Teradata SQL Scenarios1
(
dte1 DATE FORMAT 'YYYY-MM-DD' ,
dte2 DATE FORMAT 'YYYY-MM-DD'
) ;
Query to find Date Difference is > 3 yrs along with Leap Year:
-------------------------------------------------------------
SELECT
DTE1 AS DT1,
DTE2 AS DT2,
(DT1 - DT2) AS NO_OF_DAYS,
(DT1 (INT)) - (DT2 (INT)) DAYS1,
(DTE1(DECIMAL(18,6)))-(DTE2(DECIMAL(18,6))))/10000 YRS
FROM
SAMP1;
SELECT
DTE1 AS DT1,
DTE2 AS DT2,
(DT1 - DT2) AS NO_OF_DAYS,
(DT1 (INT)) - (DT2 (INT)) DAYS1,
(DTE1(DECIMAL(18,6)))-(DTE2(DECIMAL(18,6))))/10000 YRS
FROM
SAMP1
WHERE
YRS>3;
Start Date
End Date
Date Difference
2012-03-25
2009-03-27
1094
2012-03-26
2009-03-27
1095
2012-03-26
2009-03-26
1096
2012-03-26
2009-03-25
1097
2011-03-26
2008-03-26
1095
2012-03-26
2007-03-28
1825
2012-03-26
2007-03-27
1826
2012-03-26
2007-03-26
1827
2012-03-26
2007-03-25
1828
SELECT
dte1 as dt1,
dte2 as dt2,
(dt1 - dt2) as no_of_days,
(dt1 - dt2)/365 as no_of_yrs1,
cast((dt1 - dt2)/365.25 as integer) as no_of_yrs2,
extract (year from dt1) - extract (year from dt2)
case when extract(month from dt1) lt extract(month from dt2) then 1
else (case when extract(day from dt1) lt extract(day from dt2) the
n 1 else 0 end) end as no_of_yrs3;
*********************************
sel
cast((cast((COVERAGE_EFF_DTE (format 'yyyy/mm/dd')) as char(10)))) as date
from
samp1
sel
cast(x.cfd as date format 'mmddyyyy')
from
(
sel
case when CDTE=' ' then '01011800' else CDTE END cfd
from
tble1)x;
SEL
CAST(X.CED AS DATE FORMAT 'MMDDYYYY'),
CAST(X.CEDTE AS DATE FORMAT 'MMDDYYYY')
FROM
(
SELECT
CASE WHEN CDTE=' ' THEN '01011800' ELSE CDTE END CED,
CASE WHEN CODTE=' ' THEN '31123000' ELSE CDTE END CEDTE
FROM
tble2)X;
Output is 2007-04-01
*****************************
SELECT
'="' || RNBR|| '"'
FROM
(CHAR(22))
tble1 ;
************************
select
col1,
col2,
*****************************************
Select
CASE (( cast('2011-12-18 12:13:36' as date) - DATE '1900-01-01') Mod 7) +1
WHEN 0 THEN 'Sun'
WHEN 1 THEN 'Mon'
WHEN 2 THEN 'Tue'
WHEN 3 THEN 'Wed'
WHEN 4 THEN 'Thu'
WHEN 5 THEN 'Fri'
WHEN 6 THEN 'Sat' END;
***************************************
Rownum
SEL
A.USER_ID,
A.USER_NAME,
A.DT||A.RN AS YR
FROM
(
SEL
DATE(DATE,FORMAT 'YYYYMMDD') (CHAR(8)) AS DT,
SUM(1) OVER( ROWS UNBOUNDED PRECEDING) (INTEGER,FORMAT'9999999')(CHAR(7)) AS RN,
USER_ID,
USER_NAME
FROM
SAMP1)A;
select
sum(1) over( rows unbounded preceding),
USER_ID,
USER_NAME
from
SAMP1;
select
ROW_NUMBER() over(ORDER BY USER_NAME),
USER_ID,
USER_NAME
from
SAMP1;
select
csum(1,1),
USER_ID,
USER_NAME
from
SAMP1;
******************************
field to be populated with the sequence number along with the current date (YYYY
MMDD0000001 Format)
SEL
A.USER_ID,
A.USER_NAME,
A.DT||A.RN AS YR
FROM
(
SEL
SUM(1) OVER( ROWS UNBOUNDED PRECEDING) (INTEGER,FORMAT'9999999')(CHAR(7)) AS RN,
USER_ID,
USER_NAME,
DTE(DATE,FORMAT 'YYYYMMDD') (CHAR(8)) AS DT
FROM
SAMP2)A;
**************************
Split a decimal number into two : (Before Decimal & After Decimal)
SELECT
198.02345
,SUBSTR(TRIM(198.02345 MOD 1) ,2) AS col1
,198.02345 (INTEGER) AS col2
,col2 || '-' || col1;
SELECT
TRIM(198.02345) AS nbr
,SUBSTR(nbr ,1,POSITION( '.' IN nbr)-1) AS col1
,SUBSTR(nbr, POSITION('.' IN nbr)+1) AS col2
,col1 || '-' || col2;
***************************