请问如下情况要跨两个数据库的 SQL语句怎么写?
数据库 Userdata 定义了 客户的结算日期 格式 如下
名称 开始结算日 结束结算日
张三 1 31
李四 20 19
如果开始结算日 比结束结算日大的大的话 那么就是跨月结算的. 像李四就是上月的20号 至本月的19号为一个周期
数据库 Trade 是交易的记录 .格式 如下
名称 交易日期 金额
张三 2012-11-10 100
张三 2012-11-12 10
李四 2012-10-19 200
李四 2012-10-20 300
假如就这4条记录
现在是11月,我想查询 11月份这个周期的成交总额,
那张三的总额 就是 110元,李四 就是300元( 200元那条记录 不是这个周期的了)
那这个SQL 查询语句应该怎么写?
[解决办法]
select B.名称,sum(B.金额) from (select * from Userdata ) A,(select * from Trade) B where A.名称=B.名称 and A.开始结算日<A.结束结算日
错了错了,完全错了,没有求和。。。
因为李四 20 19 的这个条件不满足上面的判断,所以,李四的返回可能是空的。这条命令还确实不好写。
不过要是在程序中判断就很好解决,可以分步来
张三的很好解决。单说李四的。
李四的可以根据select distinct 名称 from Userdata where 开始结算日>结束结算日
这就得到了所有与李四的情况相似的人名表了。把这张表跟B表一并,只返回日期最小的那条记录。。。
有点细的一个问题,我建议你去oracle区,那个区有很多人很喜欢一天到晚弄这些命令。他们一会儿就能帮你敲出来一整条完整的命令,那里尽是DBA,这个区是程序员。。。