请帮我看下我的sql,谢谢

select s.staff_name,s.staff_idcard,s.staff_address from staff s where s.STAFF_CODE=52110

select nvl(sum(v.attenddays),0)+nvl(sum(v.stopdays),0)attenddys from count_attend v where v.STAFFCODE=52110

请问我该怎么把这两个sql和在一起?
select s.staff_name,s.staff_idcard,s.staff_address, nvl(sum(v.attenddays),0)+nvl(sum(v.stopdays),0) from staff s where s.STAFF_CODE=52110
这样是不对的说不是单组查询。。。
求解答 谢谢!

不是单组查询,加上group by不就行了:
[code="sql"]
select s.staff_name,
s.staff_idcard,
s.staff_address,
nvl(sum(v.attenddays), 0) + nvl(sum(v.stopdays), 0) attenddys
from staff s, count_attend v
where s.STAFF_CODE = 52110
and s.staff_code = v.staffcode
group by s.staff_name, s.staff_idcard, s.staff_address
[/code]

我试了是ok的,仅供参考~

没有测试,哈。

大致的思路就是 统计的SQL文作为子查询。

我假设

  • count_attend 可能没数据。所以用left join.
  • 两张表是用STAFFCODE做key

[code="sql"]

select
s.staff_name,s.staff_idcard,s.staff_address
from staff s left join (
select STAFFCODE, nvl(sum(v.attenddays),0)+nvl(sum(v.stopdays),0)attenddys from count_attend group by STAFFCODE
) v on s.STAFF_CODE=v.STAFFCODE
where
s.STAFF_CODE=52110

[/code]