Ms access 2010 Access中的总和生成总和并将其放置在每行上
我试图创建两个专栏:IntlAir和DomesticAir。我的数据中有一个布尔列,名为Ms access 2010 Access中的总和生成总和并将其放置在每行上,ms-access-2010,Ms Access 2010,我试图创建两个专栏:IntlAir和DomesticAir。我的数据中有一个布尔列,名为International,当International为TRUE时,IntlAir返回惩罚+票价,当International=FALSE时,DomAir返回该和 我想按月显示每个丹麦克朗的金额 我的代码是: SELECT data.PostingMonth, data.DK_Number , (SELECT sum(data.Penalty + data.SellingFare)
International
,当International
为TRUE
时,IntlAir返回惩罚+票价
,当International=FALSE
时,DomAir返回该和
我想按月显示每个丹麦克朗的金额
我的代码是:
SELECT data.PostingMonth, data.DK_Number
, (SELECT sum(data.Penalty + data.SellingFare)
FROM data
WHERE data.International = TRUE) AS IntlAir
, (SELECT sum(data.Penalty + data.SellingFare)
FROM data
WHERE data.International = FALSE) AS DomesticAir
FROM data
GROUP BY data.PostingMonth, data.DK_Number
ORDER BY data.PostingMonth;
然而,输出给出了所有DK和所有月份的总和,并将该值放入每一行
有人能告诉我我做错了什么吗?有几种方法可以做到这一点,尽管你选择的不是其中之一 永远不要确定access在sql中的位置,但如果您创建了一个这样做的查询,并将其称为queryAirTotal或类似的查询
SELECT PostingMonth, DK_Number, International, sum(Penalty + SellingFare) as AirTotal
FROM data GROUP BY PostingMonth,DK_Number,International
这将给你的总数每月,dk和类型,然后你可以做
Select t1.PostingMonth,t1.DK_Number,t1.AirTotal as IntlAir, t2.Total as DomesticAir
From queryAirTotal t1
Left Join queryAirTotal t2
On t1.PostingMonth = t2.PostingMonth and t1.DK_Number = t2.DK_Number
Where t1.International = TRUE and t2.International = FALSE
虽然这将错过只有国内航班而没有国际航班的月份/DKs。你可以用一个完整的外部连接来排序,我相信访问也会遇到困难
你可以通过工会解决这个问题
Select t1.PostingMonth,t1.DK_Number,t1.AirTotal as IntlAir, t2.Total as DomesticAir
From queryAirTotal t1
Left Join queryAirTotal t2
On t1.PostingMonth = t2.PostingMonth and t1.DK_Number = t2.DK_Number
Where t1.International = TRUE and t2.International = FALSE
Union
Select t1.PostingMonth,t1.DK_Number,t1.AirTotal as IntlAir, t2.Total as DomesticAir
From queryAirTotal t1
Left Join queryAirTotal t2
On t2.PostingMonth = t1.PostingMonth and t2.DK_Number = t1.DK_Number
Where t1.International = TRUE and t2.International = FALSE
也许这就是你所需要的:
SELECT
PostingMonth,
DK_Number,
SUM((Penalty + SellingFare) * IIf(International, 1, 0)) AS IntlAir,
SUM((Penalty + SellingFare) * IIf(International, 0, 1)) AS DomAir
FROM [data]
GROUP BY PostingMonth, DK_Number
对于测试数据
PostingMonth DK_Number International Penalty SellingFare
------------ --------- ------------- ------- -----------
1 1 False $10.00 $100.00
1 1 True $20.00 $200.00
2 1 False $30.00 $300.00
1 2 False $40.00 $400.00
1 2 False $50.00 $500.00
1 2 True $60.00 $600.00
…上述查询返回
PostingMonth DK_Number IntlAir DomAir
------------ --------- ------- -------
1 1 $220.00 $110.00
1 2 $660.00 $990.00
2 1 $0.00 $330.00
我的建议,来自经验;编辑您的帖子,将表中的5条左右记录(称为“数据”),结果中的5条左右记录,以及结果应该类似的5条左右记录包括在内。如果我们能看到数据,我们将更容易帮助您。感谢您的回复-Gord的回复似乎有效;我还没有尝试过,但这对于工会和加入来说是一个很好的实践——我仍然是一个访问新手。没有问题,无论如何,访问的方式永远不会离开我。