Is is possible to use a Case in a where statement? If
not how can I achieve having not having multiple ifs
to check the values of the where.. This is the DBPROC
that I have created. I want to be able to just use the
case so that I do not need to have all the Ifs?
Thanks.. any help is appreciated.
DROP DBPROC DBA.EMAYA_GET_SIITEMSBYREP
//
CREATE DBPROC DBA.EMAYA_GET_SIITEMSBYREP
(
IN SALES_PERSON_ID INTEGER,
IN CLIENT_ID INTEGER,
IN CLIENT_SITE_ID INTEGER,
IN FROM_DATE DATE,
IN TO_DATE DATE,
IN DOC_STATUS_ID INTEGER,
IN PROCESS_BY_D INTEGER
)
RETURNS CURSOR AS
$CURSOR = 'GET_SIITEMSBYREP';
if (SALES_PERSON_ID = 0) AND (CLIENT_ID = 0)
THEN
BEGIN
DECLARE :$CURSOR CURSOR FOR
SELECT SI.SALESREP_ID
, EE.FULLNAME, SI.SITE_NAME
, SIITEM.DESCR
, PC.CAT_NAME
, SIITEM.PROD_ID
, SIITEM.PROD_CODE
, SUM(SIITEM.QUANTITY) AS PROD_QTY
, SUM(SIITEM.QTY_DELIVERED) AS
PROD_DEL_QTY
, SUM( SIITEM.QTY_DELIVERED *
SIITEM.NET_PRICE) AS TOT_PRICE
FROM DBA.EMAYA_SALES_INVOICE SI
LEFT OUTER JOIN DBA.EMAYA_SI_ITEM SIITEM
ON SI.SALES_INVOICE_ID = SIITEM.SALES_INVOICE_ID
LEFT OUTER JOIN DBA.EMAYA_EMPLOYEE EE ON
SI.SALESREP_ID = EE.EMP_ID
LEFT OUTER JOIN DBA.EMAYA_PRODUCT PR ON
SIITEM.PROD_ID = PR.PROD_ID
LEFT OUTER JOIN
DBA.EMAYA_PRODUCT_CATEGORY PC ON PR.PROD_CATEGORY_ID
= PC.PROD_CAT_ID
WHERE SI.DELIVERY_DATE BETWEEN :FROM_DATE AND
:TO_DATE
GROUP BY SI.SALESREP_ID, EE.FULLNAME ,
SI.SITE_NAME, SIITEM.DESCR, PC.CAT_NAME,
SIITEM.PROD_ID, SIITEM.PROD_CODE, SIITEM.QUANTITY,
SIITEM.QTY_DELIVERED;
END
ELSE IF (SALES_PERSON_ID <> 0) AND (CLIENT_ID <>
0) then
begin
DECLARE :$CURSOR CURSOR FOR
SELECT SI.SALESREP_ID
, EE.FULLNAME, SI.SITE_NAME
, SIITEM.DESCR
, PC.CAT_NAME
, SIITEM.PROD_ID
, SIITEM.PROD_CODE
, SUM(SIITEM.QUANTITY) AS PROD_QTY
, SUM(SIITEM.QTY_DELIVERED) AS
PROD_DEL_QTY
, SUM( SIITEM.QTY_DELIVERED *
SIITEM.NET_PRICE) AS TOT_PRICE
FROM DBA.EMAYA_SALES_INVOICE SI
LEFT OUTER JOIN DBA.EMAYA_SI_ITEM SIITEM
ON SI.SALES_INVOICE_ID = SIITEM.SALES_INVOICE_ID
LEFT OUTER JOIN DBA.EMAYA_EMPLOYEE EE ON
SI.SALESREP_ID = EE.EMP_ID
LEFT OUTER JOIN DBA.EMAYA_PRODUCT PR ON
SIITEM.PROD_ID = PR.PROD_ID
LEFT OUTER JOIN
DBA.EMAYA_PRODUCT_CATEGORY PC ON PR.PROD_CATEGORY_ID
= PC.PROD_CAT_ID
WHERE SI.DELIVERY_DATE BETWEEN :FROM_DATE AND
:TO_DATE AND SI.SALESREP_ID = :SALES_PERSON_ID AND
SI.CLIENT_ID = :CLIENT_ID
GROUP BY SI.SALESREP_ID, EE.FULLNAME ,
SI.SITE_NAME, SIITEM.DESCR, PC.CAT_NAME,
SIITEM.PROD_ID, SIITEM.PROD_CODE, SIITEM.QUANTITY,
SIITEM.QTY_DELIVERED;
END
ELSE IF (SALES_PERSON_ID <> 0) AND (CLIENT_ID =
0) then
begin
DECLARE :$CURSOR CURSOR FOR
SELECT SI.SALESREP_ID
, EE.FULLNAME, SI.SITE_NAME
, SIITEM.DESCR
, PC.CAT_NAME
, SIITEM.PROD_ID
, SIITEM.PROD_CODE
, SUM(SIITEM.QUANTITY) AS PROD_QTY
, SUM(SIITEM.QTY_DELIVERED) AS
PROD_DEL_QTY
, SUM( SIITEM.QTY_DELIVERED *
SIITEM.NET_PRICE) AS TOT_PRICE
FROM DBA.EMAYA_SALES_INVOICE SI
LEFT OUTER JOIN DBA.EMAYA_SI_ITEM SIITEM
ON SI.SALES_INVOICE_ID = SIITEM.SALES_INVOICE_ID
LEFT OUTER JOIN DBA.EMAYA_EMPLOYEE EE ON
SI.SALESREP_ID = EE.EMP_ID
LEFT OUTER JOIN DBA.EMAYA_PRODUCT PR ON
SIITEM.PROD_ID = PR.PROD_ID
LEFT OUTER JOIN
DBA.EMAYA_PRODUCT_CATEGORY PC ON PR.PROD_CATEGORY_ID
= PC.PROD_CAT_ID
WHERE SI.DELIVERY_DATE BETWEEN :FROM_DATE AND
:TO_DATE AND SI.SALESREP_ID = :SALES_PERSON_ID
GROUP BY SI.SALESREP_ID, EE.FULLNAME ,
SI.SITE_NAME, SIITEM.DESCR, PC.CAT_NAME,
SIITEM.PROD_ID, SIITEM.PROD_CODE, SIITEM.QUANTITY,
SIITEM.QTY_DELIVERED;
END
ELSE IF (SALES_PERSON_ID = 0) AND (CLIENT_ID <>
0) then
begin
DECLARE :$CURSOR CURSOR FOR
SELECT SI.SALESREP_ID
, EE.FULLNAME, SI.SITE_NAME
, SIITEM.DESCR
, PC.CAT_NAME
, SIITEM.PROD_ID
, SIITEM.PROD_CODE
, SUM(SIITEM.QUANTITY) AS PROD_QTY
, SUM(SIITEM.QTY_DELIVERED) AS
PROD_DEL_QTY
, SUM( SIITEM.QTY_DELIVERED *
SIITEM.NET_PRICE) AS TOT_PRICE
FROM DBA.EMAYA_SALES_INVOICE SI
LEFT OUTER JOIN DBA.EMAYA_SI_ITEM SIITEM
ON SI.SALES_INVOICE_ID = SIITEM.SALES_INVOICE_ID
LEFT OUTER JOIN DBA.EMAYA_EMPLOYEE EE ON
SI.SALESREP_ID = EE.EMP_ID
LEFT OUTER JOIN DBA.EMAYA_PRODUCT PR ON
SIITEM.PROD_ID = PR.PROD_ID
LEFT OUTER JOIN
DBA.EMAYA_PRODUCT_CATEGORY PC ON PR.PROD_CATEGORY_ID
= PC.PROD_CAT_ID
WHERE SI.DELIVERY_DATE BETWEEN :FROM_DATE AND
:TO_DATE AND SI.CLIENT_ID = :CLIENT_ID
GROUP BY SI.SALESREP_ID, EE.FULLNAME ,
SI.SITE_NAME, SIITEM.DESCR, PC.CAT_NAME,
SIITEM.PROD_ID, SIITEM.PROD_CODE, SIITEM.QUANTITY,
SIITEM.QTY_DELIVERED;
END;
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]