Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计数函数不';不行?_Sql - Fatal编程技术网

Sql 计数函数不';不行?

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

我有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
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