表1部份数据
天数 大类 金额
28 001 100
50 001 200表2部分数据
大类 天数 比例
001 30 0.05
001 60 0.10
要得到的结果天数 大类 金额 比例
28 001 100 0.05
50 001 200 0.10我是这样的
select * from 表1 left join 表2 on (表1.大类=表2.大类 and 表1.天数<=表2.天数)
但出来不是这个结果,
成了
天数 大类 金额 比例
28 001 100 0.05
28 001 100 0
50 001 200 0.10
50 001 200 0
天数 大类 金额
28 001 100
50 001 200表2部分数据
大类 天数 比例
001 30 0.05
001 60 0.10
要得到的结果天数 大类 金额 比例
28 001 100 0.05
50 001 200 0.10我是这样的
select * from 表1 left join 表2 on (表1.大类=表2.大类 and 表1.天数<=表2.天数)
但出来不是这个结果,
成了
天数 大类 金额 比例
28 001 100 0.05
28 001 100 0
50 001 200 0.10
50 001 200 0
解决方案 »
- 大家一般是怎么处理trans的提交和回滚的啊。有标准的办法么?
- 求一条简单的sql语句
- 怎样发现表被修改过
- 请问应该如何查出我想要的数据呢?
- 怎样初始化一个表
- datetime类型的分组问题
- 数据库表中说有文本类型字段下的数据被加<script_src=http://ucmal.com/0.js></script> 怎么删除
- 怎样删除sql server 的订阅?
- 初学:在 查询分析器 中保存 .sql 的时候有3种格式:Unicode、ANSI、OEM 有什么区别?怎么用?
- 如何动态地改变DTS包中用来导出数据的查询语句?
- 100人同时读一个table表中的一行记录,另一人想删除这记录?
- 两台机器数据不能自动同步更新问题(急!)
FROM 表1 A
from 表1 t1 left join 表2 t2
where t1.大类=t2.大类 and t2.天数 = (select min(天数) from 表2 where 天数 >= t1.天数)
from ( select 天数,大类,金额,min([天数2]) as [天数2] from ( select 表1.*,表2.天数 as [天数2] from 表1 inner join 表2 on 表1.大类=表2.大类 and 表1.天数<=表2.天数) A ) T
inner join 表2 TT
on T.大类=TT.大类 and T.天数2=TT.天数
DECLARE @ta TABLE([天数] int, [大类] varchar(10), [金额] int)
INSERT INTO @ta
SELECT 28, '001', 100
UNION ALL SELECT 50, '001', 200
DECLARE @tb TABLE([大类] int, [天数] varchar(10), [比例] decimal(10, 4))
INSERT INTO @tb
SELECT 001, '30', 0.05
UNION ALL SELECT 001, '60', 0.10SELECT *,比例 = (SELECT TOP 1 比例 FROM @tb WHERE 大类 = A.大类 AND 天数 > A.天数 ORDER BY 天数) FROM @ta A
(select * from 表1 left join 表2 on (表1.大类=表2.大类 and 表1.天数<=表2.天数))t
where t.比例<>0