【问题标题】:How to call columns without using Group By clause如何在不使用 Group By 子句的情况下调用列
【发布时间】:2014-02-03 06:50:41
【问题描述】:

我是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 克 p1 z 34 450 550 100 克 p1 y 35 150 150 0 天 p2 z 45 150 100 50 天

预期结果:

PayeeCode payeename payeeifsccode ga da subamount type -------------------------------------------------- ------------ p1 x 123 1750 1950 200 克 p1 y 35 300 250 50 天

这里的“tblPayees.PayeeName”列在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

我知道为什么会发生错误,但是,我不想按 payeeName 分组,我只需要 payeecode。如何做到这一点? 请帮帮我

【问题讨论】:

  • 在 group by payeeCode 中应该大写为-- group by PayeeCode 吗?在两个 group by 子句中?
  • 按条款分组
  • 按PayeeCode分组为大写也没有问题
  • @sandeep 按原样发布示例数据,而不是查询结果。
  • 数据库结构你知道吗?

标签: sql-server group-by


【解决方案1】:

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

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

select PayeeCode, PayeeName from tblPayees group by PayeeCode, PayeeName

如果同一 PayeeCode 的 PayeeName 可能不同,那么您需要通过聚合函数告诉数据库引擎您要选择哪个值:

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

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

【讨论】:

  • 我有一些其他列要分配(PayeeIFSCCode,PayeeBankAcNo),我知道这些列应该是聚合或组,没有添加这两个,如何像触发器等任何其他选项一样执行此操作,存储过程?
  • @sandeep 我不确定你想在这里实现什么。也许如果您在问题中添加更多详细信息,例如当前结果、预期结果,我可以提供帮助。
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2011-09-21
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多