首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

请教如下情况要跨两个数据库的 SQL语句如何写

2013-03-26 
请问如下情况要跨两个数据库的 SQL语句怎么写?数据库 Userdata定义了 客户的结算日期 格式 如下名称开始结

请问如下情况要跨两个数据库的 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,这个区是程序员。。。

热点排行