过去几天我一直在研究这个问题,我找不到自己的方法。我有一个需要在屏幕上打印报告的C#Web应用程序。该应用程序在数据库(Oracle)上调用存储过程并返回游标。这是程序
PROCEDURE report_total(beginDate IN DATE, endDate IN DATE, c OUT REF CURSOR)
AS
BEGIN
OPEN
c
FOR
SELECT
month
,sum(field1)
-- + a lot of other fields
FROM
view1 v
WHERE
beginDate <= v.date
AND v.Date < endDate
GROUP BY
month
END;
这很好用,它每个月给我一个field1(和其他)的总和。假设您至少输入一个完整的年份范围,最多可以输入12行。 Howhever。我想做一些类似的存储过程,它会给我这几个月的详细信息。
假设beginDate ='2003-01-01'和endDate ='2005-01-05'(YYYY-MM-DD),我需要25行。每月一个,每年一个。我希望用光标OUT获得这些结果。如果您有一个不涉及光标的最简单的想法,请建议我。
答案 0 :(得分:0)
SELECT TRUNC(v.date, 'MONTH'), SUM(field1)
FROM view1 v
WHERE v.date BETWEEN beginDate and endDate
GROUP BY
TRUNC(v.date, 'MONTH')