【问题标题】:use inner join where and group by in same query在同一查询中使用内连接 where 和 group by
【发布时间】:2017-01-07 17:12:23
【问题描述】:

我想从数据库中选择一组数据以根据其他列的值查找列的总和,并且还想加入两个表,这些值在两个日期之间我可以在单个查询中执行它请帮助我知道我做了什么到目前为止是

string sql1 = @"select 
    Ledger.LedId,
    Ledger.LedName,
    sum(adjmnt.OpenBalanceAmount) as Totaldebit, 
    (adjmnt.OpenBalanceVocherType) as adjtype 
from  
    Ledger  inner join Adjustment adjust on
        Ledger.LedId =     adjmnt.LedId 
where  
    Ledger.Date >= @prmStartDate
    and Ledger.Date <= @prmEndDate";

我想做的是

string sql1 = @"select
    Ledger.LedId,
    Ledger.LedName,
    sum(adjmnt.OpenBalanceAmount) as Totaldebit , 
    (adjmnt.OpenBalanceVocherType) as adjtype 
from  
    Ledger  inner join Adjustment adjust on 
        Ledger.LedId= adjmnt.LedId 

groupby
    (adjmnt.OpenBalanceVocherType) 

where 
    Ledger.Date >= @prmStartDate and
    Ledger.Date <= @prmEndDate";

但是当我尝试这样做时,我得到了

incorrect syntax near where

请帮帮我

【问题讨论】:

  • wheregroup by 之前。

标签: sql database group-by inner-join where


【解决方案1】:

您需要将group by 放在where 之后并按Ledger.LedId,Ledger.LedName 分组:

string sql1 = @"select Ledger.LedId,Ledger.LedName,sum(adjmnt.OpenBalanceAmount) 
Totaldebit ,(adjmnt.OpenBalanceVocherType) as adjtype 
from  Ledger  inner join Adjustment adjmnt on 
Ledger.LedId= adjmnt.LedId
where Ledger.Date >= @prmStartDate and Ledger.Date <= @prmEndDate
group by Ledger.LedId,Ledger.LedName";

http://www.w3schools.com/sql/sql_groupby.asp

【讨论】:

    【解决方案2】:

    我已为您的问题添加了格式建议。

    当以更结构化的方式查看代码时,您可以立即看出groupby 实际上应该是group by 的位置存在错误。

    正如Mostafa 提到的,group by 子句应该放在where 子句之后。

    我不知道这是否能解决您的问题,但这肯定是一个错误。

    【讨论】:

    • 哦,由于某种原因,旧页面被我轮询了,但问题没有得到解答。这很奇怪......很高兴听到它已修复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多