Sql 计数函数不';不行?
我有fglage表,其中包括(除其他外)以下列:Sql 计数函数不';不行?,sql,Sql,我有fglage表,其中包括(除其他外)以下列: 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 11819
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
我需要一个查询,该查询将返回特定凭证编号(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
我收到错误消息:“使用函数计数无效”
为什么计数函数不起作用?我写错了吗?您需要添加一个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
试试这个。要获得计数和详细信息,您需要先找到匹配的
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支持…您使用的是什么数据库?您可以通过以下建议更容易回答您的问题:信息有限,但我会尝试一下。COUNT可能还需要一个groupby(在COUNT语句中没有返回的所有列上)。ODBC(如果是数据库?)。我正在使用Excel编写SQL代码。我尝试按分组,但得到相同的错误消息:“使用函数计数无效”。ODBC不是DBMS,ODBC驱动程序的名称是什么?现在SQL本身工作,但它不返回任何内容:(我知道我不应该用评论来表示感谢,所以我就去YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY