If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

 
Go Back  dBforums > Database Server Software > DB2 > subtraction in select

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 11-28-11, 10:00
Billa007 Billa007 is offline
Registered User
 
Join Date: Sep 2011
Posts: 107
subtraction in select

The below select query wiil have to do the calculation

1,If the month(RECV_DT) is in Jan-Mar -->AM_COST value subtract from Q1 column value and
has to display in the Q1 coulmn
2.Apr-jun-->above same functionality will perform in the Q2 column
3.jul-sep-->abovesame functionality will perform in the Q3 column
4.oct-dec-->abovesame functionality will perform in the Q4 column


If the SAME policy_no has multiple month(RECV_DT) rows in the same quarter means..Need to select the
latest date row and do the above calculation
Code:
select 
   t1.policy_no
,t1.Q1
,T1.Q2
,T1.Q3
,T1.Q4
,T2.AM_COST
,T2.RECV_DT

FROM 
  TABLE1 T1
INNER JOIN
 TABLE2 T1
ON

T1.POLICY_NO=T2.POLICY_NO
Code:
table1

POLICY_NO      Q1       Q2      Q3      Q4           

1234            250     0       0       50    
1234            0       75      0       50    
1234            0       0       500     50    
1234            0       0       0       25    
   
4444            80      145     0       20     
4444            0       145     100     20     
  
AB              0       145     0       20    
AB              0       145     0       20     
AB              0       145     0       200
Code:
table2

POLICY_NO          AM_COST RECV_DT        

1234                100    2011-03-19  
1234                100    2011-04-19 
1234                100    2011-09-19 
1234                100    2011-12-22
   
4444                60    2011-01-30     
4444                60    2011-07-30 
  
AB                  60    2011-10-31
AB                  60    2011-11-30
AB                  60    2011-12-30-->pick the LATEST DATE
In the table2

AB 60 2011-10-31
AB 60 2011-11-30
AB 60 2011-12-30-->LATEST DATE


the latest date (2011-12-30) row should fetch and do the calculation
EXPECTED RESULT
Code:
POLICY_NO      Q1       Q2      Q3      Q4    AM_COST RECV_DT        

1234            150      0       0       50    100    2011-03-19  
1234            0       25       0       50    100    2011-04-19 
1234            0        0       400     50    100    2011-09-19 
1234            0        0       0       75    100    2011-12-22   
4444            20      145      0       20     60    2011-01-30    
4444            0       145      40      20     60    2011-07-30      
AB              0       145      0       140    60    2011-12-30
please help
Reply With Quote
  #2 (permalink)  
Old 11-28-11, 17:37
tonkuma tonkuma is online now
Registered User
 
Join Date: Feb 2008
Location: Japan
Posts: 2,193
Before considering calculations, you should review your join condition.
I already pointed out the following issue by Example 2 in this thread query returns latest date row

You should learn by your experience.

The join condition was "T1.POLICY_NO=T2.POLICY_NO"
and the values of both tables include duplicated values for joined columns.

The result of join would include
(Number of duplicated POLICY_NO in T1) * (Number of duplicated POLICY_NO in T2)
rows for each value of POLICY_NO.

For example:
Number of rows in the result of join from your sample data would be
Code:
POLICY_NO = 1234: 4 * 4 = 16 rows
POLICY_NO = 4444: 2 * 2 =  4 rows
POLICY_NO = AB  : 3 * 3 =  9 rows
Reply With Quote
  #3 (permalink)  
Old 11-28-11, 19:48
tonkuma tonkuma is online now
Registered User
 
Join Date: Feb 2008
Location: Japan
Posts: 2,193
Did you executed the query by yourself?
It returned the error
SQL0203N A reference to column "T1.POLICY_NO" is ambiguous. SQLSTATE=42702

Here is the result of corrected query.
Code:
------------------------------ Commands Entered ------------------------------
WITH
 table1(policy_no , q1 , q2 , q3 , q4) AS (
VALUES
  ( '1234' , 250 ,   0 ,   0 ,  50 )
, ( '1234' ,   0 ,  75 ,   0 ,  50 )
, ( '1234' ,   0 ,   0 , 500 ,  50 )
, ( '1234' ,   0 ,   0 ,   0 ,  25 )

, ( '4444' ,  80 , 145 ,   0 ,  20 )
, ( '4444' ,   0 , 145 , 100 ,  20 )

, ( 'AB'   ,   0 , 145 ,   0 ,  20 )
, ( 'AB'   ,   0 , 145 ,   0 ,  20 )
, ( 'AB'   ,   0 , 145 ,   0 , 200 )
)
, table2(policy_no , am_cost , recv_dt) AS (
VALUES
  ( '1234' , 100 , '2011-03-19' )
, ( '1234' , 100 , '2011-04-19' )
, ( '1234' , 100 , '2011-09-19' )
, ( '1234' , 100 , '2011-12-22' )

, ( '4444' ,  60 , '2011-01-30' )
, ( '4444' ,  60 , '2011-07-30' )

, ( 'AB'   ,  60 , '2011-10-31' )
, ( 'AB'   ,  60 , '2011-11-30' )
, ( 'AB'   ,  60 , '2011-12-30' ) --> pick the LATEST DATE
)
select 
   t1.policy_no
,t1.Q1
,T1.Q2
,T1.Q3
,T1.Q4
,T2.AM_COST
,T2.RECV_DT

FROM 
  TABLE1 T1
INNER JOIN
 TABLE2 /*T1*/ T2
ON

T1.POLICY_NO=T2.POLICY_NO
;
------------------------------------------------------------------------------

POLICY_NO Q1          Q2          Q3          Q4          AM_COST     RECV_DT   
--------- ----------- ----------- ----------- ----------- ----------- ----------
1234              250           0           0          50         100 2011-03-19
1234              250           0           0          50         100 2011-12-22
1234              250           0           0          50         100 2011-09-19
1234              250           0           0          50         100 2011-04-19
1234                0          75           0          50         100 2011-03-19
1234                0          75           0          50         100 2011-12-22
1234                0          75           0          50         100 2011-09-19
1234                0          75           0          50         100 2011-04-19
1234                0           0         500          50         100 2011-03-19
1234                0           0         500          50         100 2011-12-22
1234                0           0         500          50         100 2011-09-19
1234                0           0         500          50         100 2011-04-19
1234                0           0           0          25         100 2011-03-19
1234                0           0           0          25         100 2011-12-22
1234                0           0           0          25         100 2011-09-19
1234                0           0           0          25         100 2011-04-19
4444               80         145           0          20          60 2011-01-30
4444               80         145           0          20          60 2011-07-30
4444                0         145         100          20          60 2011-01-30
4444                0         145         100          20          60 2011-07-30
AB                  0         145           0          20          60 2011-10-31
AB                  0         145           0          20          60 2011-12-30
AB                  0         145           0          20          60 2011-11-30
AB                  0         145           0          20          60 2011-10-31
AB                  0         145           0          20          60 2011-12-30
AB                  0         145           0          20          60 2011-11-30
AB                  0         145           0         200          60 2011-10-31
AB                  0         145           0         200          60 2011-12-30
AB                  0         145           0         200          60 2011-11-30

  29 record(s) selected.
Reply With Quote
  #4 (permalink)  
Old 11-29-11, 01:42
Billa007 Billa007 is offline
Registered User
 
Join Date: Sep 2011
Posts: 107
Hi;

Apology for the confusion..

we have another one column in join condition..that is DISTINCT column

Table1 and Table2 have

Policy_det
AA
BB
CC
DD
AA
BB
AA
BB
CC

JOIN CONTION SHOULD BE

ON
T1.POLICY_NO=T2.POLICY_NO
T1.POLICY_DET-T2.POLICY_DET

thanks
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On