Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
divan
Posting Yak Master
153 Posts |
Posted - 2012-10-22 : 07:36:58
|
| Ok friendsI am really confused with the following and your help is very much appreciated..I have written a select statement SELECT POLICY_NUMBER,SEQUENCE_NUMBER,CLIENT_NUMBER,POLICY_DATE_TIME FROM MPL_EXPOSURE WHERE CLIENT_NUMBER = 1084 AND POLICY_NUMBER NOT LIKE 'Q%' ORDER BY POLICY_DATE_TIME DESCthe following resultTX 11727 3 1084 2012-05-03 10:38:26.000TX 11727 3 1084 2012-01-26 11:47:08.000TX 11727 3 1084 2012-01-23 10:20:25.000TX 11727 3 1084 2011-12-05 13:40:13.000TX 11727 3 1084 2011-12-05 11:13:24.000TX 11727 3 1084 2011-11-28 13:51:55.000TX 11727 3 1084 2011-05-10 08:06:43.000TX 11727 3 1084 2011-04-27 08:59:20.000TX 11727 3 1084 2011-02-07 13:16:48.000then I wrote this scriptSELECT M.POLICY_NUMBER,M.CLIENT_NUMBER,M.POLICY_DATE_TIME,M.SEQUENCE_NUMBER,P.SEQUENCE_NUMBER,P.WRITTEN_PREMIUM,P.TERMINATION_DATEFROM MPL_EXPOSURE MLEFT OUTER JOIN PREMIUM_DETAIL P ON M.POLICY_NUMBER = P.POLICY_NUMBER AND M.SEQUENCE_NUMBER = P.SEQUENCE_NUMBER AND P.POLICY_DATE_TIME = (SELECT MAX (POLICY_DATE_TIME) FROM PREMIUM_DETAIL P1 WHERE P.POLICY_NUMBER = P1.POLICY_NUMBER AND P.TERMINATION_DATE IS NULL)WHERE M.POLICY_NUMBER = 'TX 11727'AND M.POLICY_DATE_TIME = (SELECT MAX (POLICY_DATE_TIME) FROM MPL_EXPOSURE M2 WHERE M.POLICY_NUMBER = M2.POLICY_NUMBER)AND M.CLIENT_NUMBER = 1084and it does not generate anything please note that I have used both INNER JOIN as well and the same result but if I comment out the last line AND M.CLIENT_NUMBER = 1084then I get the followingTX 11727 9036 2012-10-22 05:50:29.000 11 11 6303.00 NULLTX 11727 9036 2012-10-22 05:50:29.000 11 11 .00 NULLTX 11727 9036 2012-10-22 05:50:29.000 11 11 500.00 NULLTX 11727 1384 2012-10-22 05:50:29.000 10 10 6303.00 NULLTX 11727 1384 2012-10-22 05:50:29.000 10 10 .00 NULLTX 11727 1384 2012-10-22 05:50:29.000 10 10 500.00 NULLTX 11727 1866 2012-10-22 05:50:29.000 8 8 6303.00 NULLTX 11727 1866 2012-10-22 05:50:29.000 8 8 .00 NULLTX 11727 1866 2012-10-22 05:50:29.000 8 8 500.00 NULLTX 11727 1258 2012-10-22 05:50:29.000 6 6 6303.00 NULLTX 11727 1258 2012-10-22 05:50:29.000 6 6 .00 NULLTX 11727 1258 2012-10-22 05:50:29.000 6 6 500.00 NULLTX 11727 2624 2012-10-22 05:50:29.000 2 2 2721.00 NULLso what is going on? |
|
|
sunitabeck
Master Smack Fu Yak Hacker
5155 Posts |
Posted - 2012-10-22 : 07:52:26
|
Include client number also in the subquery in the where clause:....WHERE M.POLICY_NUMBER = 'TX 11727' AND M.POLICY_DATE_TIME = ( SELECT MAX(POLICY_DATE_TIME) FROM MPL_EXPOSURE M2 WHERE M.POLICY_NUMBER = M2.POLICY_NUMBER AND M.CLIENT_NUMBER = M2.CLIENT_NUMBER ) AND M.CLIENT_NUMBER = 1084 |
 |
|
|
divan
Posting Yak Master
153 Posts |
Posted - 2012-10-22 : 09:40:24
|
| sunitabeck what you suggested worked and here is the result TX 11727 1084 2012-05-03 10:38:26.000 3 NULL NULL NULL NULLbut if you notice the P.SEQUENCE_NUMBER,P.WRITTEN_PREMIUM,P.TERMINATION_DATE, P.POLICY_DATE_TIMEare null and they are from the PREMIUM_DETAIL TABLEit looks like the script is ignoring the conditions for PREMIUM_DETAILSELECT M.POLICY_NUMBER,M.CLIENT_NUMBER,M.POLICY_DATE_TIME,M.SEQUENCE_NUMBER,P.SEQUENCE_NUMBER,P.WRITTEN_PREMIUM,P.TERMINATION_DATE, P.POLICY_DATE_TIMEFROM MPL_EXPOSURE MLEFT OUTER JOIN PREMIUM_DETAIL P ON M.POLICY_NUMBER = P.POLICY_NUMBER AND M.SEQUENCE_NUMBER = P.SEQUENCE_NUMBER AND P.POLICY_DATE_TIME = (SELECT MAX (POLICY_DATE_TIME) FROM PREMIUM_DETAIL P1 WHERE P.POLICY_NUMBER = P1.POLICY_NUMBER )---AND P.TERMINATION_DATE IS NULL)WHERE M.POLICY_NUMBER = 'TX 11727'AND M.POLICY_DATE_TIME = (SELECT MAX (POLICY_DATE_TIME) FROM MPL_EXPOSURE M2 WHERE M.POLICY_NUMBER = M2.POLICY_NUMBER AND M.CLIENT_NUMBER = M2.CLIENT_NUMBER)AND M.CLIENT_NUMBER = 1084sorry I am confused.. Can you please shed some light |
 |
|
|
sunitabeck
Master Smack Fu Yak Hacker
5155 Posts |
Posted - 2012-10-22 : 11:59:54
|
You probably need to join on SEQUENCE_NUMBER also. I am guessing - if you have some sample data, that would make it clearer:SELECT M.POLICY_NUMBER, M.CLIENT_NUMBER, M.POLICY_DATE_TIME, M.SEQUENCE_NUMBER, P.SEQUENCE_NUMBER, P.WRITTEN_PREMIUM, P.TERMINATION_DATE, P.POLICY_DATE_TIMEFROM MPL_EXPOSURE M LEFT OUTER JOIN PREMIUM_DETAIL P ON M.POLICY_NUMBER = P.POLICY_NUMBER AND M.SEQUENCE_NUMBER = P.SEQUENCE_NUMBER AND P.POLICY_DATE_TIME = ( SELECT MAX(POLICY_DATE_TIME) FROM PREMIUM_DETAIL P1 WHERE P.POLICY_NUMBER = P1.POLICY_NUMBER AND P.SEQUENCE_NUMBER = P1.SEQUENCE_NUMBER )---AND P.TERMINATION_DATE IS NULL)WHERE M.POLICY_NUMBER = 'TX 11727' AND M.POLICY_DATE_TIME = ( SELECT MAX(POLICY_DATE_TIME) FROM MPL_EXPOSURE M2 WHERE M.POLICY_NUMBER = M2.POLICY_NUMBER AND M.CLIENT_NUMBER = M2.CLIENT_NUMBER ) AND M.CLIENT_NUMBER = 1084 Don't you love the way I formatted your code? Makes it a lot more readable. You can keep white spaces if you wrap the code in [code] and [/code] tags. |
 |
|
|
|
|
|
|
|