我有FGLEDGE表,包括(以及其他许多)以下列:
EGVONO EGACDT EGAIT1 EGAIT6 EGACAM
1181941 20150616 2990 1123445 3598,8
1181942 20150616 2990 1118741 136249,65
1181943 20150616 2990 1121430 20874,9
1181944 20150616 2990 1122177 21569,5
1181945 20150616 2990 6215746 340
1181946 20150630 2990 1121844 26395,8
1181946 20150630 2990 1123293 52453,15
1181946 20150630 2990 6213402 514,12
1181946 20150630 2990 6213404 514,12
1181947 20150616 2990 1120779 89568
1181948 20150616 2990 1122610 11972,73
我想要一个查询,它将返回SPECIFIC凭证编号(EGVONO)在EGAIT6列中有几个不同编号的所有行。
我的查询是:
SELECT
COUNT(DISTINCT FGLEDG.EGAIT6),
FGLEDG.EGVONO,
FGLEDG.EGACDT,
FGLEDG.EGAIT1,
FGLEDG.EGAIT6,
FGLEDG.EGACAM
FROM SEUHABOB.MVXADTA001.FGLEDG FGLEDG
WHERE (FGLEDG.EGCONO=001)
AND (FGLEDG.EGDIVI='D16')
AND (FGLEDG.EGTRCD=41)
AND (FGLEDG.EGVONO=1181946)
AND (FGLEDG.EGAIT1='2990')
AND COUNT (DISTINCT FGLEDG.EGAIT6)>1
预期结果应为
EGVONO EGACDT EGAIT1 EGAIT6 EGAIT7 EGACAM COUNT
1181946 20150630 2990 1121844 PP20225 26395,8 4
1181946 20150630 2990 1123293 PP20225 52453,15 4
1181946 20150630 2990 6213402 PP20225 514,12 4
1181946 20150630 2990 6213404 PP20225 514,12 4
我收到错误消息:“使用COUNT函数无效”。
为什么Count功能不起作用?我写错了吗?
答案 0 :(得分:1)
要获取计数和详细信息,首先找到匹配的EGVONO
然后再加入:
SELECT
FGLEDG.EGVONO,
FGLEDG.EGACDT,
FGLEDG.EGAIT1,
FGLEDG.EGAIT6,
FGLEDG.EGACAM,
dt.CNT
FROM SEUHABOB.MVXADTA001.FGLEDG FGLEDG
JOIN
(
SELECT
FGLEDG.EGVONO,
COUNT(DISTINCT FGLEDG.EGAIT6) AS CNT
FROM SEUHABOB.MVXADTA001.FGLEDG FGLEDG
WHERE (FGLEDG.EGCONO=001)
AND (FGLEDG.EGDIVI='D16')
AND (FGLEDG.EGTRCD=41)
AND (FGLEDG.EGVONO=1181946)
AND (FGLEDG.EGAIT1='2990')
GROUP BY FGLEDG.EGVONO
HAVING COUNT (DISTINCT FGLEDG.EGAIT6)>1
) AS dt
ON FGLEDG.EGVONO = dt.EGVONO
WHERE (FGLEDG.EGCONO=001)
AND (FGLEDG.EGDIVI='D16')
AND (FGLEDG.EGTRCD=41)
AND (FGLEDG.EGVONO=1181946)
AND (FGLEDG.EGAIT1='2990')
希望Access支持...
答案 1 :(得分:0)
您需要添加GROUP BY和COUNT(...)>的过滤器1需要在HAVING子句而不是WHERE子句中:
SELECT
COUNT(DISTINCT FGLEDG.EGAIT6),
FGLEDG.EGVONO,
FGLEDG.EGACDT,
FGLEDG.EGAIT1,
FGLEDG.EGAIT6,
FGLEDG.EGACAM
FROM SEUHABOB.MVXADTA001.FGLEDG FGLEDG
WHERE (FGLEDG.EGCONO=001)
AND (FGLEDG.EGDIVI='D16')
AND (FGLEDG.EGTRCD=41)
AND (FGLEDG.EGVONO=1181946)
AND (FGLEDG.EGAIT1='2990')
GROUP BY
FGLEDG.EGVONO,
FGLEDG.EGACDT,
FGLEDG.EGAIT1,
FGLEDG.EGAIT6,
FGLEDG.EGACAM
HAVING COUNT (DISTINCT FGLEDG.EGAIT6)>1
试试这个。