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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MS Access中对列标题进行分组相关的知识,希望对你有一定的参考价值。

好的,我知道在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

答案

不幸的是,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

以上是关于在MS Access中对列标题进行分组的主要内容,如果未能解决你的问题,请参考以下文章

MS Access vba中的分组字段

是否可以在 MS Access 中对设计视图进行密码保护?还是通过代码?

当值在sql中重复时如何对列进行分组

根据每个值对列的值进行分组[重复]

是否有代码对列中包含的相似单词进行分组

在 SQL 中对列中的序号进行编号