【发布时间】:2012-03-18 02:50:44
【问题描述】:
我有这个复杂的(对我而言)要求,并希望有一个 SQL 查询。这是交易:
- Access 文件中有一个名为“Expenses”的表。
- 该表包含“类别”、“金额”、“付款人”和“IsShare”等字段。
- 类别可以是燃气、杂货、家庭等...
- 金额是费用的美元金额。
- 付款人可以是我或我的兄弟(“我”或“兄弟”)。
- IsShare 可以为真或假。基本上,如果 IsShare 为真,则费用一分为二。否则,付款人将支付所有费用。
我需要一个 SQL 查询来计算特定类别的所有费用。应该这样计算:
- 我已支付的所有非共享项目的 100%(Payer = 'Me' AND IsShare = false),
- 我已支付的所有共享项目的 50%(Payer = 'Me' AND IsShare = true),并且
- 我兄弟支付的所有共享项目的 50%(Payer = 'Bro' AND IsShare = true)。
查询应该返回所有这三个项目的总和。
到目前为止,我有一个初步查询,但它返回的结果不正确。有人可以帮我改正吗?
非常感谢。
return @"SELECT Sum(Amount) AS TotalAmount " +
"FROM Expenses " +
"WHERE Category = 'Groceries' " +
"AND Payer = 'Me' " +
"AND Share = false " +
"GROUP BY Category " +
"UNION " +
"SELECT 0.5 * Sum(Amount) AS TotalAmount " +
"FROM Expenses " +
"WHERE Category = 'Groceries' " +
"AND Payer = 'Me' " +
"AND Share = true " +
"GROUP BY Category " +
"UNION " +
"SELECT 0.5 * Sum(Amount) AS TotalAmount " +
"FROM Expenses " +
"WHERE Category = 'Groceries' " +
"AND Payer = 'Bro' " +
"AND Share = true ";
"GROUP BY Category";
【问题讨论】:
-
这是什么数据库引擎,SQL Server?
-
我只想确认字段名称。首先你说它是 isShare,但在你的代码中你使用普通的 Share
-
欢迎来到 Stack Overflow 圣诞老人!我总是想提醒新用户,赞成和接受(复选标记)问题是表达赞赏的主要方式。如果您有任何问题,FAQ 是一个很好的资源,尤其是How to Ask
-
当然,除非他有一些名声,否则他不能投票 :)
-
没错,我通常会在他们可以的时候把它放进去 :) 这是我的标准欢迎。
标签: sql ms-access select sum union