【问题标题】:apply sum after the union query in ms-access在 ms-access 中联合查询后应用 sum
【发布时间】:2015-05-14 18:42:54
【问题描述】:

我在 MS-ACCESS 2010 中有一个 sql 查询,如下所示:

SELECT 
    EXC AS MY_EXC, 
    COUNT(FC_CUSIP) AS MY_FC_CUSIP
FROM 
    TESTDATA  t 
WHERE 
    FC_CUSIP <> "NULL" 
GROUP BY 
    EXC
UNION ALL
SELECT 
    EXC AS MY_EXC, 
    0 AS MY_FC_CUSIP
FROM 
    TESTDATA  t 
WHERE 
    FC_CUSIP = "NULL" 
GROUP BY 
    EXC
ORDER BY 
    MY_EXC ASC; 

结果如下:

MY_EXC  |   MY_FC_CUSIP
--------+---------------
AA      |   0
AM      |   0
AM      |   9
BB      |   0
DD      |   10
DD      |   0
F       |   0
I       |   0
NM      |   0
NM      |   131
NY      |   0
NY      |   184
OO      |   0
OO      |   14
PC      |   0
VA      |   0
Z       |   0
Z       |   2

我需要一个进一步的 sql,它可以给出如下结果: 基本上它会区分 MY_EXC 并总结 MY_FC_CUSIP

MY_EXC  |   MY_FC_CUSIP
--------+---------------
AA      |   0
AM      |   9    
BB      |   0    
DD      |   10
F       |   0
I       |   0
NM      |   131
NY      |   184
OO      |   14
PC      |   0
VA      |   0
Z       |   2

请以任何方式帮助我...实际上我正在通过 VBA 动态创建整个 sql 字符串。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:
    SELECT a.MY_EXC, SUM(a.MY_FC_CUSIP)
    FROM (SELECT EXC AS MY_EXC, COUNT(FC_CUSIP) AS MY_FC_CUSIP
          FROM TESTDATA  t 
          WHERE FC_CUSIP <> "NULL" 
          GROUP BY EXC
          UNION ALL
          SELECT EXC AS MY_EXC, 0 AS MY_FC_CUSIP
          FROM TESTDATA  t 
          WHERE FC_CUSIP = "NULL" 
          GROUP BY EXC) 
    GROUP BY a.MY_EXC 
    

    【讨论】:

    • 它在查询操作'a.MY_EXC SUM(a.MY_FC_CUSIP)'中给出语法错误(缺少操作)
    • @purnendumaity 立即尝试,错过了一个逗号
    【解决方案2】:

    MS Access 不支持子查询中的union。但是,在您的情况下,您可以简化查询:

    SELECT EXC AS MY_EXC,
           SUM(IIF(FC_CUSIP <> "NULL", 1, 0)) AS MY_FC_CUSIP
    FROM TESTDATA
    GROUP BY EXC
    ORDER BY MY_EXC ASC; 
    

    【讨论】:

    • ...它给出了正确的结果,但询问对话框警告,如使用确定/取消对话框输入“MY_EXC”参数,如果我只单击 2 次确定/取消,那么它只会给出结果。 ......我在后端通过 VBA 运行整个事情......那么如何进步或任何其他方式?
    • @Gordon...知道了...我必须删除这个 ORDER BY MY_EXC ASC;无论如何,没有该数据的子句在 EXC 列中以正确的顺序出现
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多