Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
DB2:Select子句中的group by干涉子查询_Select_Group By_Db2_Subquery - Fatal编程技术网

DB2:Select子句中的group by干涉子查询

DB2:Select子句中的group by干涉子查询,select,group-by,db2,subquery,Select,Group By,Db2,Subquery,我被SQL查询卡住了。我在select子句中进行子查询,db2会提示一个-119错误,告诉您: "An expression starting with "FACILITY_ID" specified in a SELECT clause, HAVING clause, or ORDER BY clause is not specified in the GROUP BY clause or it is in a SELECT clause, HAVING clause, or ORDER BY

我被SQL查询卡住了。我在select子句中进行子查询,db2会提示一个-119错误,告诉您:

"An expression starting with "FACILITY_ID" specified in a SELECT clause, HAVING clause, or ORDER BY clause is not specified in the GROUP BY clause or it is in a SELECT clause, HAVING clause, or ORDER BY clause with a column function and no GROUP BY clause is specified. SQL Code: -119, SQL State: 42803"
我不知道如何将NUMTAGS包含在组中。我尝试将BC.ITEM包含在GROUPBY子句中,但没有结果。我不知道如何在网上找到这个,我看的论坛也没用

如果有人能向我解释如何修复这个问题,或者在我可以找到解决方案的地方粘贴一个链接,我将不胜感激

SQL查询使用DB2,如下所示:

SELECT SS.NAME, B.DESTINATION_ID, P.DESCRIPTION, B.LAST_READ_DATE, B.LABEL, 
        (SELECT COUNT(BC.ITEM) 
        FROM PROJECT_DB.BOX_CONTENT BC
        WHERE BC.FACILITY_ID = B.FACILITY_ID
        AND BC.BOX_ID = B.BOX_ID
        GROUP BY BC.ITEM) AS NUMTAGS,
        B.BOX_ID
FROM PROJECT_DB.BOX B
INNER JOIN MAINDB.DESTINATION P ON B.DESTINATION_ID = P.DESTINATION_ID
INNER JOIN MAINDB.WAREHOUSE_DESTINATION_SECTION WH 
                                ON B.DESTINATION_ID = WH.DESTINATION_ID
                                AND B.WAREHOUSE_ID = WH.WAREHOUSE_ID
INNER JOIN MAINDB.SECTION S ON S.SECTION = WH.SECTION   
                            AND S.SECTION_TYPE = B.SECTION_TYPE
INNER JOIN MAINDB.DESTINATION_SET SS 
                            ON SS.DESTINATION_SET_ID = S.DESTINATION_SET_ID
WHERE B.WAREHOUSE_ID = 100
GROUP BY B.BOX_ID, B.FACILITY_ID, B.DESTINATION_ID, B.LAST_READ_DATE, B.LABEL, P.DESCRIPTION, SS.NAME

因为您使用的是标量子选择,所以我认为您不需要在任何语句上使用
groupby
子句。试试这个:

SELECT 
    SS.NAME,
    B.DESTINATION_ID,
    P.DESCRIPTION,
    B.LAST_READ_DATE,
    B.LABEL,

    (SELECT COUNT(BC.ITEM)
     FROM PROJECT_DB.BOX_CONTENT BC
     WHERE BC.FACILITY_ID = B.FACILITY_ID
     AND BC.BOX_ID = B.BOX_ID
    ) AS NUMTAGS,

    B.BOX_ID
FROM PROJECT_DB.BOX B
JOIN MAINDB.DESTINATION P
  ON B.DESTINATION_ID = P.DESTINATION_ID
JOIN MAINDB.WAREHOUSE_DESTINATION_SECTION WH
  ON B.DESTINATION_ID = WH.DESTINATION_ID
 AND B.WAREHOUSE_ID = WH.WAREHOUSE_ID
JOIN MAINDB.SECTION S 
  ON S.SECTION = WH.SECTION
 AND S.SECTION_TYPE = B.SECTION_TYPE
JOIN MAINDB.DESTINATION_SET SS
  ON SS.DESTINATION_SET_ID = S.DESTINATION_SET_ID
WHERE B.WAREHOUSE_ID = 100

我的最后一个工作问题是这里。我想我在“分组依据”或类似的地方引用了错误的表格:

SELECT SS.NAME, P.DESTINATION_ID, P.DESCRIPTION, B.LAST_READ_DATE, B.LABEL, 
        (SELECT COUNT(BC.ITEM) 
        FROM PROJECT_DB.BOX_CONTENT BC
        WHERE BC.ID_FACILITY = B.ID_FACILITY
        AND BC.ID_BOX = B.ID_BOX
        GROUP BY BC.ITEM) AS NUMTAGS, 
        B.BOX_ID, B.FACILITY_ID
FROM PROJECT_DB.BOX B
    INNER JOIN MAINDB.DESTINATION P ON B.DESTINATION_ID = P.DESTINATION_ID
    INNER JOIN MAINDB.WAREHOUSE_DESTINATION_SECTION WH 
                                    ON WH.WAREHOUSE_ID = B.WAREHOUSE_ID 
                                    AND WH.ID_DESTINATION = B.ID_DESTINATION
    INNER JOIN MAINDB.SECTION S ON S.SECTION = WH.SECTION
                                AND S.SECTION_TYPE = B.SECTION_TYPE
    INNER JOIN MAINDB.DESTINATION_SET SS ON SS.DESTINATION_SET_ID = S.DESTINATION_SET_ID
WHERE B.WAREHOUSE_ID = 100
GROUP BY B.BOX_ID, B.FACILITY_ID, P.DESTINATION_ID, B.LAST_READ_DATE, B.LABEL, P.DESCRIPTION, SS.NAME
WITH UR 
可以通过:v(包括组中的列)更正语句 SELECT子句中的BY子句,或v删除列 从SELECT子句

来自:DB2文档

您需要将所有所选列放入分组依据…

我需要“分组依据”,因为WAREHOUSE\u DESTINATION\u节表的性质。这个表是其他表之间的连接,我没有限制和筛选结果所需的可变参数,因此我需要“分组依据”。事情现在解决了。