具有过滤最大值的跨选项卡查询



我有以下表(VWDRSSTA)的交叉表查询代码

SYSTEM  EREIGNIS    DATUM_ZEIT  ANTRAGSNUMMER   DUNKEL
   VS    POL_AN      1.1.2016      123            1
   VS    ANL_SW      1.2.2016      123            0
   ZW    EIN_ED      1.3.2016      123            0
   ZW    AUS_ED      1.4.2016      222            1
   VS    POL_AN      1.5.2016      222            0
   VS    ANL_SW      1.6.2016      222            0

交叉表查询代码

TRANSFORM Max(VWDRSSTA.DATUM_ZEIT) AS MaxOfDATUM_ZEIT
SELECT VWDRSSTA.ANTRAGSNUMMER,
    Max(VWDRSSTA.DUNKEL) AS Dunkel,
    FROM VWDRSSTA
INNER JOIN V_NAMES ON (VWDRSSTA.SYSTEM = V_NAMES.SYSTEM_CODE)
    AND (VWDRSSTA.EREIGNIS = V_NAMES.EREIGNIS)
GROUP BY VWDRSSTA.ANTRAGSNUMMER
ORDER BY VWDRSSTA.ANTRAGSNUMMER
PIVOT V_NAMES.MAPPED_NAME;

,其中V_Names是一个包含待映射名称的查找表。

给出了结果

ANTRAGSNUMMER   DUNKEL    Eingang       Ausgang    Schwebe   Policierung
   123            1       1.3.2016                 1.2.2016   1.1.2016
   222            1                     1.4.2016   1.6.2016   1.5.2016

由于上面的代码使用Max(VWDRSSTA.DUNKEL) AS Dunkel,所以我得到Antragsnummer的最大值为1,其中我希望DUNKEL值是系统字段中VS的最大值。所以从技术上讲,我希望Antragsnummer 222的第二个记录显示为

222            0                     1.4.2016   1.6.2016   1.5.2016
到目前为止,我已经用 代替了Max(VWDRSSTA.DUNKEL) AS Dunkel
DMax("DUNKEL","VWDRSSTA","SYSTEM ='VS'") AS Dunkel

IF(VWDRSSTA.SYSTEM = 'VS', (
            SELECT (Max(VWDRSSTA.DUNKEL)) AS d
            FROM VWDRSSTA
            ), NULL) AS Dunkel

但是它们都没有像预期的那样工作。对于后者,我得到了以下错误

子查询

不允许多级GROUP BY子句

当我使用DMax时,我只得到一个值,这是最大值。

我怎样才能达到上述结果?

最简单的方法是使用DMAX(),但这可能会影响大型表的性能。

考虑这个查询:

SELECT 
    outer_VWDRSSTA.antragsnummer,
    DMax("dunkel","VWDRSSTA","[system]='VS' AND antragsnummer =" & [outer_VWDRSSTA].[antragsnummer]) AS mdunkel
FROM VWDRSSTA AS outer_VWDRSSTA
GROUP BY outer_VWDRSSTA.antragsnummer;

将输出:

+---------------+---------+
| antragsnummer | mdunkel |
+---------------+---------+
|           123 |       1 |
|           222 |       0 |
+---------------+---------+
你:

DMax("DUNKEL","VWDRSSTA","SYSTEM ='VS'") AS Dunkel

这将得到VS的最大值,无论它属于哪个antragsummer。所以你总是得到1

最新更新