Sql server 按组选择SQL

Sql server 按组选择SQL,sql-server,Sql Server,我尝试使用“按组计算”进行选择,但出现以下错误: Msg 8120,16级,状态1,第1行 列“dbo.LN0617.RATE”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中 有人能帮我吗 SELECT NT4 AS nt, LN0617.OFFCR AS OfficeCode, ln0617.RATE * 100 AS LaiSuat, SUM( ln0617.CBAL ) AS SoDu,

我尝试使用“按组计算”进行选择,但出现以下错误:

Msg 8120,16级,状态1,第1行 列“dbo.LN0617.RATE”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中

有人能帮我吗

SELECT
    NT4                AS nt,
    LN0617.OFFCR       AS OfficeCode,
    ln0617.RATE * 100  AS LaiSuat,
    SUM( ln0617.CBAL ) AS SoDu,
    ln0617.RATE * 100 * sum( ln0617.CBAL ) AS LS1
FROM
    [dbo].[SIL_CM] 
    JOIN [dbo].[LN0617] ON
    (
        ln0617.ACCTNO = SIL_CM.TK
        AND
        ln0617.CBAL <> 0
        AND
        SIL_CM.TKTYPE='L'
    )
GROUP BY
    sil_cm.NT4,
    LN0617.OFFCR,
    ln0617.RATE * 100
ORDER BY
    LN0617.OFFCR,
    ln0617.RATE * 100
选择
新界北4号,
LN0617.OFFCR作为办公代码,
ln0617.100美元,按LaiSuat计算,
金额(ln0617.CBAL)为SoDu,
ln0617.RATE*100*总和(ln0617.CBAL)为LS1
从…起
[dbo].[SIL_CM]
在上加入[dbo].[LN0617]
(
ln0617.ACCTNO=SIL_CM.TK
及
ln0617.cbal0
及
SIL_CM.TKTYPE='L'
)
分组
sil_cm.NT4,
LN0617.OFFCR,
ln0617.1费率*100
订购人
LN0617.OFFCR,
ln0617.1费率*100

我在您的选择列表中看到的唯一可能的问题是以下行:

ln0617.RATE*100*sum(ln0617.CBAL) as LS1
SQL Server可能正在抱怨ln0617.RATE,因为它与聚合函数混合使用。这里的一个选项是在总和内移动
ln0617。RATE

select
    NT4 as nt,
    LN0617.OFFCR as OfficeCode,
    ln0617.RATE*100 as LaiSuat,
    sum(ln0617.CBAL) as SoDu,
    100*sum(ln0617.RATE * ln0617.CBAL) as LS1
from [dbo].[SIL_CM]
...

这应该是可行的,因为乘法是可交换的。

我相信您只需要参考分组列,因为*100是常量

SELECT
      NT4                                               AS nt
    , LN0617.OFFCR                                      AS OfficeCode
    , ln0617.RATE * 100                                 AS LaiSuat
    , SUM(ln0617.CBAL)                                  AS SoDu
    , SUM(ln0617.CBAL * ln0617.RATE) / SUM(ln0617.cbal) AS LS1
FROM [dbo].[SIL_CM] SIL_CM
JOIN [dbo].[LN0617] LN0617 ON ln0617.ACCTNO = SIL_CM.TK
WHERE ln0617.CBAL <> 0
      AND SIL_CM.TKTYPE = 'L'
GROUP BY
      sil_cm.NT4
    , LN0617.OFFCR
    , ln0617.RATE
ORDER BY
      LN0617.OFFCR
    , ln0617.RAT
选择
NT4作为nt
,LN0617.OFFCR作为办公代码
,ln0617.100,按LaiSuat计算
,总和(ln0617.CBAL)为SoDu
,总和(ln0617.CBAL*ln0617.RATE)/总和(ln0617.CBAL)为LS1
从[dbo].[SIL_CM]SIL_CM
在LN0617.ACCTNO=SIL_CM.TK上连接[dbo].[LN0617]LN0617
其中ln0617.CBAL 0
和SIL_CM.TKTYPE='L'
分组
sil_cm.NT4
,LN0617.OFFCR
,ln0617.0
订购人
LN0617.OFFCR
,ln0617

您应该使用ln0617分组。很好,您可以勾选答案,然后请告知其他人问题是否已解决。(单击答案左侧的白色复选标记或“勾选”)