在同一个查询中使用内部连接 ​​where 和 group by

use inner join where and group by in same query

我想要 select 数据库中的一组数据,以根据其他列值查找列的总和,还想连接两个表,这些值介于两个日期之间,我可以在单个查询中执行吗,请帮忙我想知道我到目前为止所做的是

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

请帮帮我

你需要把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

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

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

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

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