SQL语句

叔到用时方恨嫂 2011-06-18 10:31:36
本来想发到sql板块的,由于参数问题还是发到这里吧。
大体结构如下:
表A
车牌号 司机 运费 出货时间
aaa 小赵 300 2011-5-25
aaa 小赵 300 2011-6-1
aaa 小赵 200 2011-6-5
bbb 小李 200 2011-6-1
bbb 小李 200 2011-6-1
ccc 小王 200 2011-6-1
ccc 小王 200 2011-6-1
ccc 小王 200 2011-6-1

表B
车牌号 补偿费用 扣除费用 调整时间
aaa 50 100 2011-5-25
aaa 100 0 2011-6-1
aaa 0 80 2011-6-1
aaa 80 100 2011-6-5

表C
车牌号 税额 单车体积
aaa 0.051 50
bbb 0.053 40
ccc 0.051 10

得到表D如下:

车牌号 司机 运费 税额 补偿费用 扣除费用 实际运费
aaa 小赵 500 0.051 180 180 计算得到
bbb 小李 400 0.053 0 0 计算得到
要求:
按车牌号汇总
2011-6-1到2011-6-30这个时间段(表A出货时间,表B调整时间)
实际运费=(运费+补偿费用-扣除费用)*(1-该车税额)

要求输入某一段时间(起始时间,截止时间)得到这一时间段的车辆运费信息,
在这一时间段中,如果该车牌号没有补偿或扣除则补偿费用或扣除费用显示为0。

求个SQL语句(带2个时间参数)
我的想法是分别把表A,表B通过车牌号分组,表A分组时左连接关联税额,然后通过车牌号组合成一张表,不过就是显示只显示有补偿费用或扣除费用的车牌信息,还有时间也是个大问题。


...全文
84 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
恩,包含ccc
yyoinge 2011-06-18
  • 打赏
  • 举报
回复
SELECT a.车牌号,a.司机,
isnull(c.税额,0) as 税额,
isnull(a.运费,0) as 运费,
isnull(b.补偿费用,0) as 补偿费用,
isnull(b.扣除费用,0) as扣除费用 ,
(isnull(a.运费,0) + isnull(b.补偿费用,0) - isnull(b.扣除费用,0)) * (1 - isnull(c.税额,0)) as 实际运费
from
(select 车牌号,司机, sum(运费) as 运费 from 表A where 出货时间 between :rq1 and :rq2 GROUP BY 车牌号,司机) a
left join
(select 车牌号, sum(补偿费用) as 补偿费用, sum(扣除费用) as 扣除费用 from 表B where 调整时间 between :rq1 and :rq2 GROUP BY 车牌号) b
on a.车牌号 = b.车牌号
left join 表C c
on a.车牌号 = c.车牌号
order by a.车牌号

/*
结果中不是应该也包含CCC吗

车牌号 司机 税额 运费 补偿费用 as扣除费用 实际运费
----- ---------- -------------------- ----------- ----------- ----------- --------------------------------
aaa 小赵 .051 500 180 180 474.500
bbb 小李 .053 400 0 0 378.800
ccc 小王 .051 600 0 0 569.400
*/
yyoinge 2011-06-18
  • 打赏
  • 举报
回复
SELECT a.车牌号,a.司机,
isnull(c.税额,0) as 税额,
isnull(a.运费,0) as 运费,
isnull(b.补偿费用,0) as 补偿费用,
isnull(b.扣除费用,0) as扣除费用 ,
isnull((a.运费 + b.补偿费用 - b.扣除费用) * (1 - c.税额),0) as 实际运费
from
(select 车牌号,司机, sum(运费) as 运费 from 表A where 出货时间 between :rq1 and :rq2 GROUP BY 车牌号,司机) a
left join
(select 车牌号, sum(补偿费用) as 补偿费用, sum(扣除费用) as 扣除费用 from 表B where 调整时间 between :rq1 and :rq2 GROUP BY 车牌号) b
on a.车牌号 = b.车牌号
left join 表C c
on a.车牌号 = c.车牌号
order by a.车牌号

为什么ccc不要呢?

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧