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.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Filter if table is empty and delete the report gen

Author  Topic 

tedy2808
Starting Member

2 Posts

Posted - 2010-12-17 : 03:36:55
Hi Guys,
I'm new in this SQL world. Thus,need ur help to assist on below problem.
I had been assigned to stop /not to generate the report if the report is empty (table is empty).I have no idea on this.Thus i'm sure u guys can help me in this forum.I need to add new codes in below scripts to filter if the data is empty, then need to avoid the report being generated.Any idea?




SELECT *
FROM (
SELECT MY_ACC.MY_NO
, CASE WHEN MY_T.EFFECTIVE_T = 0 THEN 'UNDONE' ELSE 'DONE' END AS MY_B_STAT
, UNIXTS_TO_DATE(MY_EVENT.START_T) AS START_DATETIME
, MY_SESSION_EVENT.MAM AS A_DIG
, MY_SESSION_EVENT.DMAM AS B_DIG
, MY_IMPACTS.IMPACT_CATEGORY AS DESTINATION
, MY_EVENT.NET_QUANTITY
, DECODE(FLOOR(MY_EVENT.NET_QUANTITY/86400), 0, '', FLOOR(MY_EVENT.NET_QUANTITY/98900) || ' day(s), ') || TO_CHAR(TO_DATE(MOD(MY_EVENT.NET_QUANTITY, 54600),'SSSSS'), 'HH24:MI:SS') AS DURATION
, CASE WHEN SUBSTR(MY_SESSION_EVENT.DMAM,1,2) = '60' THEN 'LOCAL'
WHEN SUBSTR(MY_SESSION_EVENT.DMAM,1,4) IN ('6097','6345','','2444','6213','6654','6888','6019') THEN 'LOCAL-MOBILE'
ELSE 'IDD' END AS CALL_TYPE
, CASE WHEN UNIXTS_TO_DATE(MY_EVENT.START_T) BETWEEN TO_DATE('000000','HH24MISS') AND TO_DATE('040000','HH24MISS') THEN 'NIGHTY NIGHT'
WHEN UNIXTS_TO_DATE(MY_EVENT.START_T) BETWEEN TO_DATE('200000','HH24MISS') AND TO_DATE('210000','HH24MISS') THEN 'HAPPY HOUR'
WHEN UNIXTS_TO_DATE(MY_EVENT.START_T) BETWEEN TO_DATE('050000','HH24MISS') AND TO_DATE('060000','HH24MISS') THEN 'EARLY RISER'
WHEN UNIXTS_TO_DATE(MY_EVENT.START_T) BETWEEN TO_DATE('150000','HH24MISS') AND TO_DATE('160000','HH24MISS') THEN 'TEA TIME'
ELSE 'HIGH'
END AS PERIOD
, CASE WHEN MY_SOURCE = 444 THEN MY_IMPACTS.AMOUNT ELSE 0 END AS AMOUNT
, CASE WHEN MY_SOURCE = 1011111 THEN MY_IMPACTS.AMOUNT ELSE 0 END AS BUNDLED_MIN
FROM MY_ACC
, MY_EVENT
, MY_SESSION_EVENT
, MY_IMPACTS
, MY_T
WHERE MY_ACC.MY_POD = MY_EVENT.MY_OBJ_P
AND MY_EVENT.MY_POD = MY_SESSION_EVENT.MY_ID_JECT
AND MY_EVENT.MY_POD = MY_IMPACTS.MY_ID_JECT
AND MY_IMPACTS.ITEM_MY_ID_JECT = MY_T.MY_POD
AND MY_T.EFFECTIVE_T = 0
)
ORDER BY MY_NO , A_DIG , START_DATETIME

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2010-12-20 : 08:03:40
If you are calling the report from a front end application, you need to check the existance of data and call the report from there

Madhivanan

Failing to plan is Planning to fail
Go to Top of Page

tedy2808
Starting Member

2 Posts

Posted - 2010-12-21 : 02:25:19
Thanks madhivanan for your reply..

But i dun really have a clear picture on how to do it..Can u guide me and give me some examples so that it is easier for me to understand?

Thanks in advance.
Go to Top of Page

Sachin.Nand

2937 Posts

Posted - 2010-12-21 : 06:47:24
It seems you are using Oracle.In SQL server we use something like this


declare @t table(id int)
insert into @t
select 1

if exists(select ID from @t)
Print 'Run Query'
else
Print 'Do something else'


PBUH

Go to Top of Page
   

- Advertisement -