2017-02-14 67 views
0
select 
    n_CompanyId, 
    n_CompanyCode, 
    s_CompanyName, 
    (select COUNT(em.n_CompanyId) as Total_Employee 
    from tbl_CompanyMaster cm 
    inner join tbl_EmployeeMaster em on (cm.n_CompanyId = em.n_CompanyId) 
    group by cm.n_CompanyId), 
    (select COUNT(bm.n_CompanyId) as Total_Branch 
    from tbl_CompanyMaster cm 
    inner join tbl_BranchMaster bm on (cm.n_CompanyId = bm.n_CompanyId) 
    group by cm.n_CompanyId), 
    (select COUNT(ca.n_CompanyId) as Total_Employee 
    from tbl_CompanyMaster cm 
    inner join tbl_CompanyApplicationRigths ca on (cm.n_CompanyId = ca.n_CompanyId) 
    group by cm.n_CompanyId), 
    d_InsertDate, 
    d_ModifiyDate 
from 
    tbl_CompanyMaster 
group by 
    n_CompanyId 
order by 
    n_CompanyId asc 

當我想這有像需要解決下面的SQL查詢

Column 'tbl_CompanyMaster.n_CompanyCode' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

消息當我把這個拿到

select 
    n_CompanyId, 
    (select COUNT(em.n_CompanyId) as Total_Employee 
    from tbl_CompanyMaster cm 
    inner join tbl_EmployeeMaster em on (cm.n_CompanyId = em.n_CompanyId) 
    group by cm.n_CompanyId), 
    (select COUNT(bm.n_CompanyId) as Total_Branch 
    from tbl_CompanyMaster cm 
    inner join tbl_BranchMaster bm on (cm.n_CompanyId = bm.n_CompanyId) 
    group by cm.n_CompanyId), 
    (select COUNT(ca.n_CompanyId) as Total_Employee 
    from tbl_CompanyMaster cm 
    inner join tbl_CompanyApplicationRigths ca on (cm.n_CompanyId = ca.n_CompanyId) 
    group by cm.n_CompanyId) 
from 
    tbl_CompanyMaster 
group by 
    n_CompanyId 
order by 
    n_CompanyId asc 

我得到一個錯誤:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

有人可以幫我嗎?

+0

請格式化您的文章/代碼,否則就太多精力去嘗試,看看發生了什麼事情。 – FibreChips

回答

0

CompanyApplicationRigths一個錯字?應該是CompanyApplicationRights

select 
    n_CompanyId 
, Total_Employee = (
    select count(em.n_CompanyId) 
    from tbl_EmployeeMaster em 
    where cm.n_CompanyId = em.n_CompanyId 
    ) 
, Total_Branch = (
    select count(bm.n_CompanyId) 
    from tbl_BranchMaster bm 
    where cm.n_CompanyId = bm.n_CompanyId 
) 
, Total_ApplicationRigths = (
    select count(ca.n_CompanyId) 
    from tbl_CompanyApplicationRigths ca 
    where cm.n_CompanyId = ca.n_CompanyId) 
) 
from tbl_CompanyMaster as cm 
group by n_CompanyId 
order by n_CompanyId asc 

也可以寫爲:

select 
    n_CompanyId 
    , Total_Employee = count(em.*) 
    , Total_Branch = count(bm.*) 
    , Total_ApplicationRigths = count(ca.*) 
from tbl_CompanyMaster as cm 
    left join tbl_EmployeeMaster em 
    on cm.n_CompanyId = em.n_CompanyId 
    left join tbl_BranchMaster bm 
    on cm.n_CompanyId = bm.n_CompanyId 
    left join tbl_CompanyApplicationRigths ca 
    on cm.n_CompanyId = ca.n_CompanyId 
group by n_CompanyId 
order by n_CompanyId asc