这两个查询语句怎么写?

abinnet 2004-11-22 10:42:14
表owner:
xm bh htje xsrq tfrq
张三 1 2600 2004-10-11
李四 2 2500 2004-08-01 2004-10-15
王五 3 2400 2004-09-10

表money:
bh rq kxmc je
1 2004-10-11 工资 230
1 2004-10-21 工资 370
1 2004-10-11 奖金 60
2 2004-09-01 工资 250
2 2004-09-01 福利 230
2 2004-10-02 工资 -250
2 2004-10-02 福利 -50
3 2004-10-02 工资 250
3 2004-10-02 福利 150

(两表bh字段关连)

问题一:如何显示owner.xsrq > min(money1.rq) 的owner的记录。

问题二:如何得到下表:

xm htje xsrq yc wc
张三 2600 2001-10-11 600 2000
王五 2400 2004-09-10 250 2150

说明
1、统计owner.xsrq<='2004-10-31' and not(owner.tfrq<='2004-10-31')
2、结果表中yc为在money中bh等于owner.bh,kxmc=工资,rq <='2004-10-31' 的je合计
3、结果表中wc为owner.htje - yc
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsxaa 2004-11-22
  • 打赏
  • 举报
回复
回复人: vinsonshen(有空多来,努力升星~~) ( ) 信誉:95 2004-11-22 10:58:00 得分: 0


lsxaa(小李铅笔刀) ,第二个也不行吧?


呵呵 第二个那里不行呢???
davorsuker39 2004-11-22
  • 打赏
  • 举报
回复
问题一:
select a.* from owner a join money b
on a.xsrq>min(b.rq) and a.bh=b.bh

问题二:
select a.xm,a.htje,a.xsrq,
yc=sum(case b.kxmc when '工资' then b.je else 0 end),
wc=a.htje-sum(case b.kxmc when '工资' then b.je else 0 end)
from owner a join money1 b on a.bh=b.bh and b.rq <='2004-10-31'
group by a.xm
vinsonshen 2004-11-22
  • 打赏
  • 举报
回复
lsxaa(小李铅笔刀) ,第二个也不行吧?
lsxaa 2004-11-22
  • 打赏
  • 举报
回复
第一个应该是这样

select * from owner a
where xsrq>(select min(rq) from money1 where bh=a.bh )
lanbaibai 2004-11-22
  • 打赏
  • 举报
回复
select * from owner a ,money1 b where bh=a.bh and rq<a.xsrq
lsxaa 2004-11-22
  • 打赏
  • 举报
回复
select a.xm,a.htje,a.xsrq,
yc=sum(case b.kxmc when '工资' then b.je else 0 end),
wc=a.htje-sum(case b.kxmc when '工资' then b.je else 0 end)
from owner a inner join money1 b on a.bh=b.bh and b.rq <='2004-10-31'
group by a.xm
lsxaa 2004-11-22
  • 打赏
  • 举报
回复
select * from owner a
where not exists(select 1 from money1 where bh=a.bh and rq<a.xsrq)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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