Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 2010 Access中的总和生成总和并将其放置在每行上_Ms Access 2010 - Fatal编程技术网

Ms access 2010 Access中的总和生成总和并将其放置在每行上

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)

我试图创建两个专栏:IntlAir和DomesticAir。我的数据中有一个布尔列,名为
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的回复似乎有效;我还没有尝试过,但这对于工会和加入来说是一个很好的实践——我仍然是一个访问新手。没有问题,无论如何,访问的方式永远不会离开我。