我想查看当年所有真实的政策。 这意味着如果用户输入2017,则需要搜索2017年发布的策略(“ 2017年1月1日至2017年12月31日”) 如果用户输入2016,则需要搜索2016年发布的策略(“ 2016年1月1日至2016年12月31日”) 继续。 从图片中可以看到,所有这些数据都需要存储在excel文件中,该文件必须包含11行和2列(塔里法,计数)
select substr(tarifa,1,2),count(*)
from pol p, uvod u, doppov d
where (datum_dop >=sysdate) AND (datum_dop<=sysdate)
and izdavanje>=sysdate
and p.orgjed = u.sorgz (+)
--and DATUM_PREKIDA is not null
and p.polica=d.polica and d.pov_dopl='P'
and d.status='F'
and cisti_ao(p.polica)!=0
group by substr(tarifa,1,2)
运行此查询时,出现错误no rows selected
但是在修改了该查询并输入year之后,我仅获得10列2行
select substr(tarifa,1,2),count(*)
from pol p, uvod u, doppov d
where (datum_dop >='1-jan-12') AND (datum_dop<='31-dec-13')
and izdavanje>='01-jul-07'
and p.orgjed = u.sorgz (+)
--and DATUM_PREKIDA is not null
and p.polica=d.polica and d.pov_dopl='P'
and d.status='F'
and cisti_ao(p.polica)!=0
group by substr(tarifa,1,2)
SU COUNT(*)
-- ----------
01 188
02 29
04 1
05 1
06 4
07 3
08 1
10 2
但是我需要获得11列2行。 我不知道我在哪里犯了错误以及我做错了什么。 谁能帮我,拜托! ! !我会非常感谢 干杯! ! !
源代码过程
PROCEDURE OTKAZANE IS
application OLE2.OBJ_TYPE;
workbooks OLE2.OBJ_TYPE;
workbook OLE2.OBJ_TYPE;
worksheets OLE2.OBJ_TYPE;
worksheet OLE2.OBJ_TYPE;
cell OLE2.OBJ_TYPE;
range OLE2.OBJ_TYPE;
range_col OLE2.OBJ_TYPE;
args OLE2.LIST_TYPE;
VRIJEDNOST VARCHAR2(500);
form_name VARCHAR2(100);
f_block VARCHAR2(100);
l_block VARCHAR2(100);
f_item VARCHAR2(100);
l_item VARCHAR2(100);
cur_item VARCHAR2(100);
item_name VARCHAR2(100);
baslik VARCHAR2(100);
row_n NUMBER;
col_n NUMBER;
filename VARCHAR2(100);
BROJAC NUMBER:=0;
/*Otkazane police u bilo kojem periodu */
cursor o1 is
select substr(tarifa,1,2),count(*)
from pol p, uvod u, doppov d
where (datum_dop >='1-jan-12') AND (datum_dop<='31-dec-13')
and izdavanje>='01-jul-07'
and p.orgjed = u.sorgz (+)
--and DATUM_PREKIDA is not null
and p.polica=d.polica and d.pov_dopl='P'
and d.status='F'
and cisti_ao(p.polica)!=0
group by substr(tarifa,1,2)
BEGIN
message('huhu');
END;
更新
COUNT(DISTINCTSUBSTR(TARIFA,1,2))
---------------------------------
1
1
1
1
1
答案 0 :(得分:4)
什么是datum_dop,它是DATE列吗?因为您正在将其与包含日期的字符串进行比较。仅通过比较年份,可能会最适合您。将where子句改写为:
WHERE EXTRACT(YEAR FROM datum_dop) = my_year_input
或者,如果您有两个输入作为开始日期和结束日期。
WHERE datum_dop BETWEEN my_start_date AND my_end_date
但是请始终确保这些日期实际上是日期,如果不存在,请使用适当的格式进行TO_DATE。