作者vipin (Vipin)
看板Database
标题Re: [SQL ] 怎捞出不同日期的资料作加总
时间Wed Mar 4 11:27:07 2009
我不确定丢在网页上的情况. 但如果你要长出空白的纪录, 应该要有个table去做比对
建一个table, 一个栏位 date, 就只放20090301~20090331, 用它来让你的资料outer join
资料部分的计算, 我试过select case when else 的语法是ok的
不知你的不适合是指哪方面.
SELECT b, a1, SUM (c) c
FROM (SELECT a,
CASE WHEN (a < '20090301') THEN '20090301' ELSE a END
AS a1,
b,
c
FROM test)
GROUP BY b, a1
CREATE TABLE TEST
(
A VARCHAR2(8 BYTE),
B VARCHAR2(6 BYTE),
C VARCHAR2(10 BYTE)
)
Insert into TEST
(A, B, C)
Values
('20040210', '200903', '100');
Insert into TEST
(A, B, C)
Values
('20081020', '200903', '200');
Insert into TEST
(A, B, C)
Values
('20090301', '200903', '100');
Insert into TEST
(A, B, C)
Values
('20090305', '200903', '100');
Insert into TEST
(A, B, C)
Values
('20060405', '200903', '200');
Insert into TEST
(A, B, C)
Values
('20060304', '200903', '300');
COMMIT;
※ 引述《amoebaer (变形虫)》之铭言:
: 大家好 目前小弟是刚接触oracle 想要捞出相同天数的资料加总
: 但目前有个问题是 如果在某个月份以前的资料全归在当月份的第一天
: ex 我要做三月份每天的统计 但是bill_date的日期有可能是2006年的
: 这样我就必须把这资料加总在 3月1日这天 其它三月份天数的资料
: 就各自加总各自的日期 ex. 3月2日 3月3日......
: 资料表的格是就像下图
: bill_date revenue_year total_fee
: -------------------------------------
: 20070210 200903 100
: 20081020 200903 200
: 20090301 200903 100
: 20090305 200903 100
: 20060405 200903 200
: 20060304 200903 300
: .
: .
: 假如我是算200903这月份 但bill_date有可能是20070210 我要把他归在 20090301
: 所以希望呈现出来的是像下面这样
: revenue_year date total
: -------------------------------------
: 200903 20090301 900
: 200903 20090302 0
: 200903 20090303 0
: 200903 20090304 0
: 200903 20090305 100
: 请问
: 我需要建另一个table存这些资料吗 因为原本的table没有date这栏位
: 因为最後是要捞这些资料出来 在网页上画图 是有建另一个table比较方便吗?
: 或是cursor直接捞 然後去呈现 因为每天都需要更新 还是有其它比较好的方法呢?
: 今天有用过case when else end 但好像也不太适合 麻烦大家了!!
: 感激不尽!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.190.113