例如: t1 结构:`id` int(11) NOT NULL, `room_id` int(11) NOT NULL, `date` date NOT NULL, `type1` int(11) NOT NULL, `money` double(13,0) DEFAULT NULL, t2 结构:`id` int(11) NOT NULL, `room_id` int(11) NOT NULL, `date` date NOT NULL, `type2` int(11) NOT NULL, `money` double(13,0) DEFAULT NULL,其中数据:我现在需要显示的样子: 房间 日期 类别1 类别2 类别3 类别4...... 01 12-1 500 100 20就是按照类别把两个表中的金额按照房间 日期的进行累加下 然后在列表出来
如果类别是固定的几种 不知道这么做可以么. with t1 as ( select 1 rid,date'2013-09-10' rdate,2 tid,50 money from dual union all select 1 rid,date'2013-09-10' rdate,4 tid,40 money from dual union all select 2 rid,date'2013-09-11' rdate,1 tid,100 money from dual ),t2 as ( select 1 rid,date'2013-09-10' rdate,1 tid,100 money from dual union all select 2 rid,date'2013-09-11' rdate,2 tid,150 money from dual union all select 1 rid,date'2013-09-11' rdate,3 tid,120 money from dual union all select 2 rid,date'2013-09-11' rdate,1 tid,110 money from dual )select rid,rdate, sum(decode(tid,1,money,0)) "类别1",sum(decode(tid,2,money,0)) "类别2", sum(decode(tid,3,money,0)) "类别3",sum(decode(tid,4,money,0)) "类别4"
from (select * from t1 union all select * from t2) t group by rid,rdate order by rid,rdate rid rdate 类别1 类别2 类别3 类别4 ------------------------------------------------------------------ 1 1 2013/9/10 100 50 0 40 2 1 2013/9/11 0 0 120 0 3 2 2013/9/11 210 150 0 0
11g写法 select * from (select * from t1 union all select * from t2) t pivot (sum(money) for tid in (1 "类别1",2 "类别2",3 "类别3",4 "类别4")) order by rid,rdate
我想问下如果是2个表里的字段不是取的全部怎么办? 并且2个表的取的字段数是不一样的 那应该在 from (select * from t1 union all select * from t2) t 这个里面把* 代替了?
并且二个表中表示同样的字段的取名名称不一样怎么办? 会不会影响 union all 的使用 就是说例如日期的表示 一个表中的字段名字是date 但另外一个表中表示日期的那个字段就叫time 但我需要取每一天的相同日期的进行累加还是
需要什么字段就取什么字段不管多少个union all 字段只是个别名 都是根据第一个select来显示字段名也就是select date from tb1 union all select time from tb2 查询出来的就是字段date
t1 结构:`id` int(11) NOT NULL,
`room_id` int(11) NOT NULL,
`date` date NOT NULL,
`type1` int(11) NOT NULL,
`money` double(13,0) DEFAULT NULL,
t2 结构:`id` int(11) NOT NULL,
`room_id` int(11) NOT NULL,
`date` date NOT NULL,
`type2` int(11) NOT NULL,
`money` double(13,0) DEFAULT NULL,其中数据:我现在需要显示的样子: 房间 日期 类别1 类别2 类别3 类别4......
01 12-1 500 100 20就是按照类别把两个表中的金额按照房间 日期的进行累加下 然后在列表出来
with t1 as
(
select 1 rid,date'2013-09-10' rdate,2 tid,50 money from dual union all
select 1 rid,date'2013-09-10' rdate,4 tid,40 money from dual union all
select 2 rid,date'2013-09-11' rdate,1 tid,100 money from dual
),t2 as
(
select 1 rid,date'2013-09-10' rdate,1 tid,100 money from dual union all
select 2 rid,date'2013-09-11' rdate,2 tid,150 money from dual union all
select 1 rid,date'2013-09-11' rdate,3 tid,120 money from dual union all
select 2 rid,date'2013-09-11' rdate,1 tid,110 money from dual
)select rid,rdate,
sum(decode(tid,1,money,0)) "类别1",sum(decode(tid,2,money,0)) "类别2",
sum(decode(tid,3,money,0)) "类别3",sum(decode(tid,4,money,0)) "类别4"
from (select * from t1 union all select * from t2) t
group by rid,rdate
order by rid,rdate
rid rdate 类别1 类别2 类别3 类别4
------------------------------------------------------------------
1 1 2013/9/10 100 50 0 40
2 1 2013/9/11 0 0 120 0
3 2 2013/9/11 210 150 0 0
select *
from (select * from t1 union all select * from t2) t
pivot (sum(money) for tid in (1 "类别1",2 "类别2",3 "类别3",4 "类别4"))
order by rid,rdate
那应该在
from (select * from t1 union all select * from t2) t
这个里面把* 代替了?
FRevMoneyType 款项类型(字符串类型)
FRoomID 房屋
FBizDate 业务日期
FMoney 金额
以及其它字段....
表B:
FRoomID 房屋
FBizDate 业务日期
FDepositSortID 押金类别
FActGatheringAmo 已收金额
其它字段
(押金类别表里 有id 有名称 )表C:
FRoomID 房屋
FBizDate 业务日期
FDepositSortID 款项类别
FPayAmount 收款金额
其它字段
现在需要的就是按照日期 房屋ID 以及各种收费类别(3个表里的类别有的是名称 有的需要关联外键)以及各种类别的当天的统计金额来 应该怎么关联啊 非常万分感谢您啊
FRevMoneyType款项类型(字符串类型) FRoomID房屋 FBizDate业务日期 FMoney金额 以及其它字段....
水费 01 2013-09-12 50
电费 02 2013-09-11 100
复印费 02 2013-09-12 30表B:
FRoomID房屋 FBizDate业务日期 FDepositSortID押金类别 FActGatheringAmo已收金额 其它字段
(还有个押金类别表里 有id 有名称 )
01 2013-09-11 02 40
02 2013-09-10 01 50押金类别表:
id name
01 施工单位押金
02 装修登记证押金
03 物业费
04 水费表C:
FRoomID房屋 FBizDate业务日期 FDepositSort款项类别 FPayAmount收款金额 其它字段
01 2013-09-11 水费 60
02 2013-09-12 物业费 100最后需要的结果应该是这样的::房屋 日期 水费 电费 物业费 装修登记证押金 复印费 等等其它的所有费用01 2013-09-11 3个表水费的总价 3个表电费的总价 ...类推
01 2013-09-12 同上
02 2013-09-11 ...非常感谢您的帮助..