I have a query in oracle:
WITH hist_snaps
AS (SELECT instance_number,
snap_id,
round(begin_interval_time,'MI') datetime,
( begin_interval_time + 0 - LAG (begin_interval_time + 0)
OVER (PARTITION BY dbid, instance_number ORDER BY snap_id)) * 86400 diff_time
FROM dba_hist_snapshot), hist_stats
AS (SELECT dbid,
instance_number,
snap_id,
stat_name,
VALUE - LAG (VALUE) OVER (PARTITION BY dbid,instance_number,stat_name ORDER BY snap_id)
delta_value
FROM dba_hist_sysstat
WHERE stat_name IN ('user commits', 'user rollbacks'))
SELECT datetime,
ROUND (SUM (delta_value) / 3600, 2) as transactions
FROM hist_snaps sn, hist_stats st, DUAL
WHERE st.instance_number = sn.instance_number
AND st.snap_id = sn.snap_id
AND datetime >= CURRENT_DATE - 1
AND diff_time IS NOT NULL
GROUP BY datetime
ORDER BY 1
This returns me 2 columns like this:
I am trying to make a WHEN so that when the data that is in transactions is < 0 I put 0 in that cell.
Try this code but I get an error:
WITH hist_snaps
AS (SELECT instance_number,
snap_id,
round(begin_interval_time,'MI') datetime,
( begin_interval_time + 0 - LAG (begin_interval_time + 0)
OVER (PARTITION BY dbid, instance_number ORDER BY snap_id)) * 86400 diff_time
FROM dba_hist_snapshot), hist_stats
AS (SELECT dbid,
instance_number,
snap_id,
stat_name,
VALUE - LAG (VALUE) OVER (PARTITION BY dbid,instance_number,stat_name ORDER BY snap_id)
delta_value
FROM dba_hist_sysstat
WHERE stat_name IN ('user commits', 'user rollbacks'))
SELECT datetime,
CASE ROUND (SUM (delta_value) / 3600, 2) as transactions1
WHEN transactions1 < 0 THEN 0
END AS transactions
FROM hist_snaps sn, hist_stats st, DUAL
WHERE st.instance_number = sn.instance_number
AND st.snap_id = sn.snap_id
AND datetime >= CURRENT_DATE - 1
AND diff_time IS NOT NULL
GROUP BY datetime
ORDER BY 1