代码之家  ›  专栏  ›  技术社区  ›  Marc L

T-SQL查询未在输出中分组结果

  •  0
  • Marc L  · 技术社区  · 6 年前

    我在存储过程中嵌入了以下查询

    select u.UserName, s.Name, count(i.id) as NumberAccounts, sum(i.total) as CCTotal
      from invoice i 
        inner join visit v on v.id = i.id
        inner join branch b on b.id = v.branchid
        inner join practice p on p.id = b.practiceid
        inner join visitscheme vs on vs.id = v.id
        inner join [plan] pl on pl.id = vs.planid
        inner join scheme s on s.id = pl.schemeid
        inner join creditcontrol cc on cc.SchemeId = s.id
        inner join [user] u on u.id = cc.userid
     where p.APIKey = @pracId
       and (u.id = @CCid OR @CCId = '999999')
       and (s.id = @SchemeId or @SchemeId = 999999)
     group by u.UserName, s.Name
     order by u.username
    

    当我运行它而不是按用户名和方案对结果进行分组时,我得到以下结果

    UserName    Name    NumberAccounts  CCTotal
    chanel   BANKMED    9954            11882514.19
    ciske    BANKMED    9954            11882514.19
    Estee    BANKMED    9954            11882514.19
    Feroza   BANKMED    9954            11882514.19
    

    未应用分组,每个分组中的值相同。有人知道我错在哪里吗?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ravi Bharati Mathapati    6 年前

    就这样写。。。。

    select u.UserName, s.Name, count(i.id) as NumberAccounts, sum(i.total) as CCTotal
      from invoice i 
        inner join visit v on v.id = i.id
        inner join branch b on b.id = v.branchid
        inner join practice p on p.id = b.practiceid and p.APIKey = @pracId
        inner join visitscheme vs on vs.id = v.id
        inner join [plan] pl on pl.id = vs.planid
        inner join scheme s on s.id = pl.schemeid and (s.id = @SchemeId or @SchemeId = 999999)
        inner join creditcontrol cc on cc.SchemeId = s.id
        inner join [user] u on u.id = cc.userid and (u.id = @CCid OR @CCId = '999999')
     group by u.UserName, s.Name
     order by u.username
    

    假设你的连接是正确的