注册访问查询

时间:2009-07-14 07:46:58

标签: ms-access

请看下面的例子

   type      qty   total
   A         10    10
   A         5     15
   S         7      8
   A         12    20
   S         5     15

我想要一个可以找到总数的访问查询,即如果类型为'A',则将其添加到total,如果type为'S'则从total减去。任何人都可以帮助我。

3 个答案:

答案 0 :(得分:1)

您可以使用Iif函数反转S类行,例如:

SELECT Sum(IIf([type]="S",-[total],[total])) AS subtotal
FROM table;

或者在查询视图中,您可以通过添加新字段来执行此操作:

subtotal: IIf([type]="S",-[total],[total])

然后激活工具栏中的Totals图标,并选择Sum作为Totals的值。

答案 1 :(得分:0)

这样的事情:

SELECT T1.type, T1.qty, T1.total, T1.total + T1.qty AS subtotal
  FROM MyTable AS T1
 WHERE T1.type = 'A'
UNION ALL
SELECT T1.type, T1.qty, T1.total, T1.total - T1.qty AS subtotal
  FROM MyTable AS T1
 WHERE T1.type = 'S';

或者可能是这样:

SELECT T1.type, T1.qty, T1.total, 
       T1.total + SWITCH(
                         T1.type = 'A', T1.qty, 
                         T1.type = 'S', 0 - T1.qty,
                         TRUE, NULL
                        ) AS subtotal
  FROM MyTable AS T1;

根据您发现更容易阅读的内容,您希望如何处理既不是“A”也不是“S”的行,以及哪一行表现最佳(按此顺序,IMO)。

答案 2 :(得分:0)

SELECT IIF(Type = 'A',total + qty,total - qty) as newTotal from table1