Sql server 如何在不使用GROUPBY子句的情况下调用列

Sql server 如何在不使用GROUPBY子句的情况下调用列,sql-server,group-by,Sql Server,Group By,我是sql新手,我有一个疑问 select t1.PayeeCode,t1.PayeeName,t1.PayeeIFSCCode,t1.grossAmount as ga,t2.Deduction as da,(t1.grossAmount-t2.Deduction) as SubAmount from ( (select PayeeCode,PayeeName,PayeeIFSCCode,PayeeBankAcNo,sum(PayeeAmou

我是sql新手,我有一个疑问

    select  t1.PayeeCode,t1.PayeeName,t1.PayeeIFSCCode,t1.grossAmount as ga,t2.Deduction          
      as da,(t1.grossAmount-t2.Deduction) as SubAmount from (
     (select PayeeCode,PayeeName,PayeeIFSCCode,PayeeBankAcNo,sum(PayeeAmount) as  
    grossAmount from tblPayees where AccountType='g' group by payeeCode, PayeeName,PayeeIFSCCode,PayeeBankAcNo) t1

        inner join

     (select PayeeCode,sum(PayeeAmount) as deduction from tblPayees where   
       AccountType='d' group by payeeCode) t2

 on t1.PayeeCode=t2.PayeeCode
 )
当前结果

PayeeCode payeename payeeifsccode ga da subamount type -------------------------------------------------------------- p1 x 123 1300 1400 100 g p1 z 34 450 550 100 g p1 y 35 150 150 0 d p2 z 45 150 100 50 d 预期结果:

PayeeCode payeename payeeifsccode ga da subamount type -------------------------------------------------------------- p1 x 123 1750 1950 200 g p1 y 35 300 250 50 d 这是列“TBLPayes.PayeName”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中

我知道为什么会发生EEOR,但我不想按PayeName分组,我只知道PayeCode。怎么做?
请帮助我

问题是您需要在group by子句中包含该列,或者在select列表中使用一个聚合,如MIN、MAX等。否则,数据库引擎不知道如何处理它,即从组中选择什么值

现在确定不能在两列上分组吗?同一个PayeCode可以有不同的PayeName吗?如果没有,您可以通过以下方式将其包括在组中:

select PayeeCode, PayeeName from tblPayees group by PayeeCode, PayeeName
如果同一PayeCode的PayeName可能不同,则需要通过聚合函数告诉数据库引擎要选择的值:

select PayeeCode, Max(PayeeName) as PayeeName from tblPayees group by PayeeCode

甚至可以在逗号分隔的列表中连接PayeName值,但我想这超出了这个问题的范围。

在按PayeCode分组的列表中,是否应将其大写为-按PayeCode分组?在两个group by子句中?两个group by CLAUESEGROUP by PayeeCode都大写,也没有problem@sandeep按原样发布示例数据,而不是查询结果。数据库结构u wnat?我有一些其他列要分配PayeIfSCCODE、PayeBankACNO,我知道它们应该是聚合的或组的,而不必在这两个列中添加,如何像触发器、存储过程等其他选项一样做到这一点?@sandeep我不确定您在这里想要实现什么。如果你在问题中添加更多细节,比如当前结果、预期结果,我可能会有所帮助。