在MS Access中对列标题进行分组

问题描述 投票:0回答:1

好的,我知道在Ms Access Reports或Crosstab Queries中对行进行分组,但是您可以对列标题进行分组吗?

我有以下字段的查询

DaysWork___Source___Opening___CashIN___CashOUT

18年1月10日____ Cashier1___1500______800______200

18年1月10日____ Cashier2___130_______100______900

18年2月10日_____ Cashier1__1500______500______250

18年2月10日_____ Cashier2__1300______150_______25

我可以在报告或其他查询中将查询显示为这样

DaysWork___________Cashier1_______________________Cashier2 ___________Opening___CashIN___CashOUT___Opening___CashIN___CashOUT 1/10/18 ______ 1500____800______200____1300_____100______900 2/10/18 ______ 1500_______ 500______250____1300_____150_______ 25

ms-access ms-access-2013 ms-access-2016
1个回答
0
投票

不幸的是,SQL没有必需的功能。如果收银员名称是固定的并且已知数量的收银员,您可以使用如下查询:

SELECT DaysWork
    ,Max(IIf(Source <> 'Cashier1', NULL, Opening)) AS Opening_1
    ,Max(IIf(Source <> 'Cashier1', NULL, CashIN)) AS CashIN_1
    ,Max(IIf(Source <> 'Cashier1', NULL, CashOUT)) AS CashOUT_1
    ,Max(IIf(Source <> 'Cashier2', NULL, Opening)) AS Opening_2
    ,Max(IIf(Source <> 'Cashier2', NULL, CashIN)) AS CashIN_2
    ,Max(IIf(Source <> 'Cashier2', NULL, CashOUT)) AS CashOUT_2
FROM MyTable
GROUP BY DaysWork

您也可以创建一个查询并使用它而不是MyTable,其中每个出纳员都有一个相应的数字,并在报告查询中使用那些Source列的数字。在这种情况下,您不需要知道收银员名称,但应限制不同收银员的数量

SELECT DaysWork
    ,Max(IIf(CashierNo <> 1, NULL, Opening)) AS Opening_1
    ,Max(IIf(CashierNo <> 1, NULL, CashIN)) AS CashIN_1
    ,Max(IIf(CashierNo <> 1, NULL, CashOUT)) AS CashOUT_1
    ,Max(IIf(CashierNo <> 2, NULL, Opening)) AS Opening_2
    ,Max(IIf(CashierNo <> 2, NULL, CashIN)) AS CashIN_2
    ,Max(IIf(CashierNo <> 2, NULL, CashOUT)) AS CashOUT_2
FROM qry_OnMyTable
GROUP BY DaysWork
© www.soinside.com 2019 - 2024. All rights reserved.