当前位置:主页>销售管理软件> 列表

如何写这个SQL 找免费家庭记账软件

仓库管理软件版1楼: 表T1:

银行行号 笔数
A 5
B 6
C 8
D 11
.............

表T2:
收费档次 笔数 收费标准
1 5 0.80 (说明:笔数小于等于5的按0.80/笔收费。)
2 10 0.50 (说明:笔数小于等于10大于上一档次的笔数的按0.80/笔收费。)
3 20 0.30 (说明:笔数小于等于20大于上一档次的笔数的的按0.80/笔收费。)

我想得到如下结果:
T2.收费档次 T1.银行行号 T1.笔数
1 A 5
2 B 6
2 C 8
3 D 11
....
即根据银行的笔数来决定用哪个档次来收费。
能否用SQL写出来?

2楼: 1.
"select T2.收费档次,T1.银行行号 ,T1.笔数 from t1 inner join t2 on t1.笔数 =T2.笔数 into cursor Tmp1"
2 臨時表方法通過循環處理 如erp软件

3楼: select
(select min(表T2.收费档次) from 表T2 where 表T2.笔数>=表T1.笔数) 收费档次,表T1.银行行号,表T1.笔数
from 表T1
上面语句经过测试没有问题!

4楼: select T2.收费档次,T1.银行行号,T1.笔数 from t1 inner join t2 t1.笔数=t2.笔数

5楼: on t1.笔数 =T2.笔数 应该是不可能的。
笔数小于等于某档次,但要大于上一档次的笔数,则按该档次收费

6楼: Carson_zzd:
你的SQL拿出来的收费档次 都是最小那个档次,结果不对

仓库管理软件版7楼: SELECT ''收费档次''=
CASE
WHEN 笔数 < =5 THEN ''1''
WHEN 笔数 > 5 and 笔数 < =10 THEN ''2''
WHEN 笔数 > 10 and 笔数 < =20 THEN ''3''
END,
银行行号,
笔数
FROM T1

8楼: bbgsgs:
表T2:
的记录数不是固定为3条的!!是不定的!

9楼: 这样行不
select
(select top 1 (表T2.收费档次) from 表T2 where 表T2.笔数>=表T1.笔数) 收费档次,表T1.银行行号,表T1.笔数
from 表T1

10楼: bbgsgs:
表T2:
的记录数不是固定为3条的!!是不定的!


我觉得还是bbgsgs这个方法行得通,收费标准应该是固定的吧,即使不是也不会很多吧,要不会不会有什么规律可循

11楼: 来自:Carson_zzd, 时间:2006-1-9 14:03:14, ID:3322873 | 编辑
select
(select min(表T2.收费档次) from 表T2 where 表T2.笔数>=表T1.笔数) 收费档次,表T1.银行行号,表T1.笔数
from 表T1
上面语句经过测试没有问题!
===============================================================================
来自:zgj_gd, 时间:2006-1-9 14:34:14, ID:3322917
Carson_zzd:
你的SQL拿出来的收费档次 都是最小那个档次,结果不对
===============================================================================
小伙,难道我写的不是你要结果吗?你好好看看,仔细领悟一下~
可不要瞎说话阿!!!!!!!!!!!!!!!!!!!!!!

12楼: to Carson_zzd:
你的结果我测试了,结果是:
1 A 5
NULL B 6
NULL C 8
1 D 11
不相信你试试 如免费家庭记账软件

13楼: select t2.收费档次, t1.银行行号, t1.笔数
from t1, (select 收费档次,
case when 收费档次=1 then 0
else (select 笔数 + 1 from t2 aa where aa.收费档次=a.收费档次-1)


end as 笔数1, 笔数
from t2 a) t2
where t1.笔数 between t2.笔数1 and t2.笔数

在sql server 2000下测试通过

仓库管理软件版14楼: 在sql 2000 下,这样就可以了:
select T2.收费档次,T1.银行行号,T1.笔数
from T1,T2 where T2.笔数=(select min(笔数) from T2 where 笔数>=T1.笔数)

15楼: Create Table #T1(HangHao Varchar(10),BiShu int)
Create Table #T2(ShouFeiDangCi int,BiShu int,ShouFeiBiaoZhun Numeric(18,2))

Insert #T1 Select ''a'',5
Insert #T1 Select ''b'',6
Insert #T1 Select ''c'',8
Insert #T1 Select ''d'',11


Insert #T2 Select 1,5,0.8
Insert #T2 Select 2,10,0.5
Insert #T2 Select 3,20,0.3

Select * From #t1
Select * From #t2


Select (Select ShouFeiDangCi From #t2 Where BiShu=(Select Min(BiShu) From #T2 T2 Where T2.BiShu>=T1.BiShu )),* From #T1 T1

16楼: 多人接受答案了。