Home » SQL & PL/SQL » SQL & PL/SQL » One more condition in this script (Oracle,8.1.7.0.0,Windows 2003 Server)
One more condition in this script [message #610937] Wed, 26 March 2014 03:19 Go to next message
kumarvk
Messages: 214
Registered: July 2004
Senior Member
My current condition:
  SELECT   subm_id, count(car_no)
    FROM   CCR
   WHERE       pohd_cfm_date <= SYSDATE
           AND pohd_cfm_date IS NOT NULL
           AND (ledger_in_date IS NULL OR ledger_in_date > SYSDATE)
           AND (sihd_si_date IS NULL OR sihd_si_date > SYSDATE)
GROUP BY   subm_id;


I am getting the correct result.

Now I want to add onemore condition along with this

  SELECT   subm_id, count(car_no)
    FROM   CCR
   WHERE       pohd_cfm_date <= SYSDATE
           AND pohd_cfm_date IS NOT NULL
           AND (ledger_in_date IS NULL OR ledger_in_date > SYSDATE)
           AND (sihd_si_date IS NULL OR sihd_si_date > SYSDATE)
           and car_no is null --new condition
GROUP BY   subm_id;


If I add the new condition car_no is null I am not getting the correct result. Can anyone help?

CREATE TABLE CCR
(
  CAR_NO                        VARCHAR2(9),
  SUBM_ID                       VARCHAR2(10), 
  LEDGER_IN_DATE                DATE,
  POHD_CFM_DATE                 DATE,
  SIHD_SI_DATE                  DATE
)
PCTUSED    65
PCTFREE    20
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          16M
            NEXT             16400K
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            FREELISTS        1
            FREELIST GROUPS  1
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCACHE
NOPARALLEL;


Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   ('TNM00133', '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('02/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   ('TNM00128', '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('02/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   ('TNM00129', '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('02/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   ('TNM00130', '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('02/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   (NULL, '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), NULL);
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   ('TNM00131', '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('02/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into ccr
   (CAR_NO, SUBM_ID, LEDGER_IN_DATE, POHD_CFM_DATE, SIHD_SI_DATE)
 Values
   ('TNM00132', '4732', NULL, TO_DATE('01/23/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('02/28/2014 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;

[Updated on: Wed, 26 March 2014 03:21]

Report message to a moderator

Re: One more condition in this script [message #610938 is a reply to message #610937] Wed, 26 March 2014 03:20 Go to previous messageGo to next message
Michel Cadot
Messages: 68645
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator

Quote:
If I add the new condition car_no is null I am not getting the correct result. Can anyone help?


How can we know what is the correct result?

Re: One more condition in this script [message #610939 is a reply to message #610938] Wed, 26 March 2014 03:22 Go to previous messageGo to next message
kumarvk
Messages: 214
Registered: July 2004
Senior Member
The correct result should be 10 whereas I am getting 16.
Re: One more condition in this script [message #610940 is a reply to message #610939] Wed, 26 March 2014 03:34 Go to previous messageGo to next message
John Watson
Messages: 8931
Registered: January 2010
Location: Global Village
Senior Member
This is my result:
orclz>  SELECT   subm_id, count(car_no)
  2      FROM   CCR
  3     WHERE       pohd_cfm_date <= SYSDATE
  4             AND pohd_cfm_date IS NOT NULL
  5             AND (ledger_in_date IS NULL OR ledger_in_date > SYSDATE)
  6             AND (sihd_si_date IS NULL OR sihd_si_date > SYSDATE)
  7             and car_no is null --new condition
  8  GROUP BY   subm_id;

SUBM_ID    COUNT(CAR_NO)
---------- -------------
4732                   0

orclz>
Nice test case, but I don't get your stated (not demonstrated) result.
Re: One more condition in this script [message #610942 is a reply to message #610939] Wed, 26 March 2014 03:54 Go to previous messageGo to next message
Michel Cadot
Messages: 68645
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator

kumarvk wrote on Wed, 26 March 2014 09:22
The correct result should be 10 whereas I am getting 16.



Why 10?

Re: One more condition in this script [message #611021 is a reply to message #610942] Wed, 26 March 2014 20:46 Go to previous messageGo to next message
kumarvk
Messages: 214
Registered: July 2004
Senior Member
Why 10?

Only 10 don't have the car_no.
Re: One more condition in this script [message #611022 is a reply to message #611021] Wed, 26 March 2014 20:58 Go to previous messageGo to next message
BlackSwan
Messages: 26766
Registered: January 2009
Location: SoCal
Senior Member
  1  SELECT   subm_id, count(subm_id)
  2          FROM   CCR
  3         WHERE       pohd_cfm_date <= SYSDATE
  4                 AND pohd_cfm_date IS NOT NULL
  5                 AND (ledger_in_date IS NULL OR ledger_in_date > SYSDATE)
  6                 AND (sihd_si_date IS NULL OR sihd_si_date > SYSDATE)
  7                 and car_no is null --new condition
  8*     GROUP BY   subm_id
SQL> /

SUBM_ID    COUNT(SUBM_ID)
---------- --------------
4732                   10
Re: One more condition in this script [message #611027 is a reply to message #611021] Thu, 27 March 2014 01:19 Go to previous messageGo to next message
Michel Cadot
Messages: 68645
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator

kumarvk wrote on Thu, 27 March 2014 02:46
Why 10?

Only 10 don't have the car_no.


From what you posted how can we know what you want to retrieve?

Re: One more condition in this script [message #611041 is a reply to message #611027] Thu, 27 March 2014 03:35 Go to previous message
cookiemonster
Messages: 13920
Registered: September 2008
Location: Rainy Manchester
Senior Member
To clarify:

COUNT(column) returns the count of non-nbull values in column.

So
SELECT COUNT(column)
FROM ....
WHERE column IS NULL

Must return 0 by definition.

And in your sample data only 6 records have a not null car_no.

Your sample data can never have given a value of 16.
Previous Topic: where can i call the procedure in the procedure in the package
Next Topic: use of EXTEND in Collection in NESTED TABLES
Goto Forum:
  


Current Time: Fri Apr 26 08:01:36 CDT 2024