yanyanwoainio
2012-08-07 17:07
浏览 215
已采纳

请帮我看下我的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
这样是不对的说不是单组查询。。。
求解答 谢谢!

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • liuyinhuan0409 2012-08-08 09:28
    已采纳

    不是单组查询,加上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的,仅供参考~

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • clxy大叔 2012-08-07 18:22

    没有测试,哈。

    大致的思路就是 统计的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]

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题