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

时间:2017-01-07 17:12:23

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

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

envelope.ppm

我正在寻找的是

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";

请帮帮我

2 个答案:

答案 0 :(得分:2)

您需要将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

答案 1 :(得分:1)

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

当以更有条理的方式查看代码时,您可以立即告知groupby实际上应该group by存在错误。

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

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