多个语句之间

时间:2012-10-01 01:02:59

标签: sql sum between

我是一名正在修读SQL课程的学生。我目前正在尝试从表中检索几组行的总和。我是SQL开发的新手,我不太清楚以下场景中的问题是什么。我有一个大表,我想从中选择特定行,然后添加余额列。

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

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开发中的任何建议持开放态度,非常感谢任何反馈。

3 个答案:

答案 0 :(得分:13)

使用OR代替AND! 你要表达的是,给我结果在A和B之间,or它在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

我丢弃了无关的括号,但是你甚至可以删除其余的括号,因为在AND之后OR被处理了。请参阅:SQL Server Operator Precedence

答案 1 :(得分:1)

如果你的名字以W开头,你能否在A-D F-M U-Z之间写信?当然不是。

但是,它可以介于A-D F-M U-Z之间。

同样适用于帐号。

答案 2 :(得分:0)

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