数据库中有这样两个表Record
Id type_id amount years months
1 1 100.00 2010 2
2 1 50.00 2010 2
3 3 200 2010 2Type
Id type_name
1 A
2 B
3 C报表条件如下:
根据检索条件(years和months)检索出满足条件(Record表的years和months)
的每一个Type的amount合计。结果集如下所示:
Report
Type_name sum_amount
A 150.00
B 0
C 50.00我目前的做法是在数据库中建一个视图,得到所有的合计信息,SQL代码如下:Select Type.Type_name,TypeAmount_Tmp.sum_amount, TypeAmount_Tmp.Years,
TypeAmount_Tmp.months
(
Select Record.type_id, sum(Record.amount) As sum_amount,
Record.years, Record.months
Record
From Record
Group by Record.type_id,Record.years, Record.months
) As TypeAmount_Tmp
Left Outer Join Type
On TypeAmount_Tmp. type_id = Type.id
然后在程序中,根据(years和month)检索条件检索相应数据。目前这个方案有个问题就是:
因为Record没有Type=B的数据,所以通过视图得到的报表没有Type=B的数据,如下面:
Type_name sum_amount
A 150.00
C 50.00而报表要像前面提到的Report那样展示。
请教各位高手,有什么好的办法,是哪块出现了问题,欢迎讨论。
Id type_id amount years months
1 1 100.00 2010 2
2 1 50.00 2010 2
3 3 200 2010 2Type
Id type_name
1 A
2 B
3 C报表条件如下:
根据检索条件(years和months)检索出满足条件(Record表的years和months)
的每一个Type的amount合计。结果集如下所示:
Report
Type_name sum_amount
A 150.00
B 0
C 50.00我目前的做法是在数据库中建一个视图,得到所有的合计信息,SQL代码如下:Select Type.Type_name,TypeAmount_Tmp.sum_amount, TypeAmount_Tmp.Years,
TypeAmount_Tmp.months
(
Select Record.type_id, sum(Record.amount) As sum_amount,
Record.years, Record.months
Record
From Record
Group by Record.type_id,Record.years, Record.months
) As TypeAmount_Tmp
Left Outer Join Type
On TypeAmount_Tmp. type_id = Type.id
然后在程序中,根据(years和month)检索条件检索相应数据。目前这个方案有个问题就是:
因为Record没有Type=B的数据,所以通过视图得到的报表没有Type=B的数据,如下面:
Type_name sum_amount
A 150.00
C 50.00而报表要像前面提到的Report那样展示。
请教各位高手,有什么好的办法,是哪块出现了问题,欢迎讨论。
Record
Id type_id amount years months
1 1 100.00 2010 2
2 1 50.00 2010 2
3 3 200 2010 2
4 2 300.00 2010 3
Type
Id type_name
1 A
2 B
3 C 如果是上面这样的数据,我要检索2010.2的数据,你的SQL得到的结果是
Record
type_name sum(amount)
A 150.00
c 200.00而我要得到的是这样的结果集
Report
Type_name sum_amount
A 150.00
B 0
C 50.00
TypeAmount_Tmp.months
(
Select Record.type_id, sum(Record.amount) As sum_amount,
Record.years, Record.months
Record
From Record
Group by Record.type_id,Record.years, Record.months
) As TypeAmount_Tmp
Join Type
On TypeAmount_Tmp. type_id = Type.id
<listcell label="@{vo.typeId,converter='com.cea.common.converter.TypeNameConverter'}"/>
TypeNameConverter这个类传进去typeId,返回typeName.
不知道你明不明白
如果是Sql写的话
select type_name,sum(amount) from record,type where record.type_id = type.type_id group by record.type_id;
listcell是什么?
Record
Id type_id amount years months
1 1 100.00 2010 2
2 1 50.00 2010 2
3 3 200 2010 2
4 2 300.00 2010 3
Type
Id type_name
1 A
2 B
3 C如果数据是上面这样
SQL这样写,不能得出2010.2所有type的amount
select type_name,sum(amount) from record,type where record.type_id = type.type_id group by record.type_id;