Sql server 如何在不使用GROUPBY子句的情况下调用列
我是sql新手,我有一个疑问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
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我不确定您在这里想要实现什么。如果你在问题中添加更多细节,比如当前结果、预期结果,我可能会有所帮助。