Группировка заголовков столбцов в MS Access - PullRequest
0 голосов
/ 07 ноября 2018

Хорошо, я знаю о группировании строк в отчетах Ms Access или перекрестных запросах, но можете ли вы сгруппировать заголовки столбцов?

У меня есть запрос со следующими полями

DaysWork ___ Источник ___ ___ Открытие Кашин ___ CASHOUT

1/10/18 ____ Cashier1 ___ ______ 1500 800 ______ 200

1/10/18 ____ Cashier2 ___ _______ 130 100 ______ 900

2/10/18 _____ Cashier1__1500 ______ ______ 500 250

2/10/18 _____ Кассир2__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

1 Ответ

0 голосов
/ 07 ноября 2018

К сожалению, 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
...