10

我是一名学生开发人员,目前正在学习 SQL 课程。我目前正在尝试从表中检索几组行的总和。我对 SQL 开发非常陌生,我不太确定以下场景中的问题是什么。我有一个大表,我想从中选择特定行,然后添加余额列。

以下不会在结果中显示任何数据,我不太清楚为什么。我有一种预感,每个表之间只能使用一次 between 语句,但也许我错了?

Select Description, SUM(Balance) AS Total_Balance
FROM Chart_Of_Accounts
WHERE (Account BETWEEN ('400401') AND ('400407')) 
AND (Account BETWEEN ('440094') AND ('440100')) 
AND (Account BETWEEN ('450094') AND ('450100'))
GROUP BY Description, Balance 

编辑 10.1.2012 应(Richard aka cyberkiwi) 的要求

是)我有的

Set 1
|Account        |Description         |Balance
|4004xx         |Red Wine            |$2361.23
|4004xx         |White Wine          |$3620.23
|4004xx         |Rice Wine           |$1223.23

Set 2
|Account        |Description         |Balance
|4400xx         |Red Wine            |$4361.23
|4400xx         |White Wine          |$3260.23
|4400xx         |Rice Wine           |$223.23

Set 3
|Account        |Description         |Balance
|4500xx         |Red Wine            |$1361.23
|4500xx         |White Wine          |$1620.23
|4500xx         |Rice Wine           |$1223.23

我正在努力实现的结果

Total
|Description         |Total_Balance
|Red Wine            |$8083.69
|White Wine          |$8500.69
|Rice Wine           |$2669.69

感谢您阅读我的帖子!我也愿意接受任何关于 SQL 开发的建议,非常感谢任何反馈。

4

3 回答 3

25

使用 OR 而不是 AND!
你的意思是,给我在 A 和 Bor之间、在 C 和 D 之间等的结果。

  SELECT Description, SUM(Balance) AS Total_Balance
    FROM Chart_Of_Accounts
   WHERE (Account BETWEEN '400401' AND '400407') 
      OR (Account BETWEEN '440094' AND '440100') 
      OR (Account BETWEEN '450094' AND '450100')
GROUP BY Description

我删除了无关的括号,但您甚至可以删除剩余的括号,因为 OR 是在 AND 之后处理的。请参阅:SQL Server 运算符优先级

于 2012-10-01T01:06:56.390 回答
2

如果你的名字以 W 开头,你的字母可以介于 ADFMUZ 之间吗?当然不是。

但是,它可以在 ADFMUZ 之间。

同样的事情也适用于帐号。

于 2012-10-01T01:16:45.427 回答
0

我认为你的部分问题(除了在应该是 OR 的地方使用 AND 之外,正如 RichardTheKiwi 如此亲切地指出的那样)是你同时按描述和平衡进行分组。您应该只按描述分组,因为您正在尝试对每个描述的余额求和。如果您对 Balance 的每个唯一值以及每个唯一 Balance 的其他字段上的聚合函数(SUM()、AVG()、STDEV()...)感兴趣,您可以按余额分组。

于 2015-06-29T23:35:25.390 回答