Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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/7/sql-server/22.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_Sql Server - Fatal编程技术网

Sql 特定列的总和获取错误

Sql 特定列的总和获取错误,sql,sql-server,Sql,Sql Server,我有这样一个问题: SELECT DISTINCT dbo.T_Order_Header.F_Exhibitor, dbo.T_Order_Header.F_Exhibition, dbo.T_Exhibition.F_Exhibition_Name, dbo.T_Exhibitor.F_Exhibitor_Name, dbo.T_Order_Detail.F_ItemCode, dbo.T_L2Category.F_L2Cat_Name

我有这样一个问题:

SELECT  DISTINCT  
    dbo.T_Order_Header.F_Exhibitor, 
    dbo.T_Order_Header.F_Exhibition, 
    dbo.T_Exhibition.F_Exhibition_Name,
    dbo.T_Exhibitor.F_Exhibitor_Name,
    dbo.T_Order_Detail.F_ItemCode,
    dbo.T_L2Category.F_L2Cat_Name, 
    SUM(dbo.T_Order_Detail.F_Qty-dbo.T_Order_Detail.F_CNQty) AS F_Qty,
    dbo.T_L1Category.F_L1Cat_Name,
    dbo.T_Order_Header.F_Stand,
    dbo.T_Category.F_Cat_name,
    dbo.T_ExStand.F_Bld_Code, 
    dbo.T_ExBuilding.F_Bld_name  
FROM dbo.T_Order_Header 
LEFT OUTER JOIN dbo.T_OrderAttachment 
    ON dbo.T_OrderAttachment.F_OrderNumber  = dbo.T_Order_Header.F_OrderNumber 
LEFT OUTER JOIN dbo.T_Order_Detail 
    ON dbo.T_Order_Detail.[Header_ID] = dbo.T_Order_Header.[ID]
LEFT OUTER JOIN dbo.T_L2Category 
    ON dbo.T_Order_Detail.F_ItemCode = dbo.T_L2Category.F_ItemCode
LEFT OUTER JOIN dbo.T_L1Category 
    ON dbo.T_L1Category.F_L1Cat_Code  = dbo.T_L2Category.F_L1Cat_Code
LEFT OUTER JOIN dbo.T_Category 
    ON dbo.T_Category.F_Cat_Code = dbo.T_L2Category.F_Cat_Code
LEFT OUTER JOIN dbo.T_ExStand  
    ON dbo.T_ExStand.F_Stand_Code = dbo.T_Order_Header.F_Stand
LEFT OUTER JOIN dbo.T_ExBuilding  
    ON dbo.T_ExStand.F_Bld_Code = dbo.T_ExBuilding.F_Bld_Code
LEFT OUTER JOIN dbo.T_Exhibition 
    ON dbo.T_Order_Header.F_Exhibition = dbo.T_Exhibition.F_Exhibition_Code
LEFT OUTER JOIN dbo.T_Exhibitor 
    ON dbo.T_Order_Header.F_Exhibitor = dbo.T_Exhibitor.F_Exhibitor_Code 
WHERE
    F_Stand IN(
        SELECT F_Stand_Code 
        FROM T_ExStand 
        WHERE
            F_Site_Code ='DWTC' 
            AND F_Bld_Code = 'HALL1-4 & CONCOURSE'
    )
    AND T_Order_Header.F_Exhibition = '12004'
    AND T_Order_Header.F_IsActive = 1 
    AND F_Exhibitor='2467'
我想显示F_数量的总和,但我一直得到这个错误:

“dbo.T\u订单\u标题.F\u参展商”列在选择列表中无效 因为它既不包含在聚合函数中,也不包含在 分组依据子句


您需要使用正在选择的所有列(聚合函数中的列除外)进行分组,如下所示:

SELECT  
dbo.T_Order_Header.F_Exhibitor, 
dbo.T_Order_Header.F_Exhibition, 
dbo.T_Exhibition.F_Exhibition_Name,
dbo.T_Exhibitor.F_Exhibitor_Name,
dbo.T_Order_Detail.F_ItemCode,
dbo.T_L2Category.F_L2Cat_Name, 
SUM(dbo.T_Order_Detail.F_Qty-dbo.T_Order_Detail.F_CNQty) AS F_Qty,
dbo.T_L1Category.F_L1Cat_Name,
dbo.T_Order_Header.F_Stand,
dbo.T_Category.F_Cat_name,
dbo.T_ExStand.F_Bld_Code, 
dbo.T_ExBuilding.F_Bld_name  
 FROM dbo.T_Order_Header 
LEFT OUTER JOIN dbo.T_OrderAttachment 
ON dbo.T_OrderAttachment.F_OrderNumber  = dbo.T_Order_Header.F_OrderNumber 
LEFT OUTER JOIN dbo.T_Order_Detail 
ON dbo.T_Order_Detail.[Header_ID] = dbo.T_Order_Header.[ID]
LEFT OUTER JOIN dbo.T_L2Category 
ON dbo.T_Order_Detail.F_ItemCode = dbo.T_L2Category.F_ItemCode
LEFT OUTER JOIN dbo.T_L1Category 
ON dbo.T_L1Category.F_L1Cat_Code  = dbo.T_L2Category.F_L1Cat_Code
LEFT OUTER JOIN dbo.T_Category 
ON dbo.T_Category.F_Cat_Code = dbo.T_L2Category.F_Cat_Code
LEFT OUTER JOIN dbo.T_ExStand  
ON dbo.T_ExStand.F_Stand_Code = dbo.T_Order_Header.F_Stand
LEFT OUTER JOIN dbo.T_ExBuilding  
ON dbo.T_ExStand.F_Bld_Code = dbo.T_ExBuilding.F_Bld_Code
LEFT OUTER JOIN dbo.T_Exhibition 
ON dbo.T_Order_Header.F_Exhibition = dbo.T_Exhibition.F_Exhibition_Code
LEFT OUTER JOIN dbo.T_Exhibitor 
ON dbo.T_Order_Header.F_Exhibitor = dbo.T_Exhibitor.F_Exhibitor_Code 
WHERE
F_Stand IN(
    SELECT F_Stand_Code 
    FROM T_ExStand 
      WHERE
          F_Site_Code ='DWTC' 
          AND F_Bld_Code = 'HALL1-4 & CONCOURSE'
   )
   AND T_Order_Header.F_Exhibition = '12004'
  AND T_Order_Header.F_IsActive = 1 
  AND F_Exhibitor='2467'
 group by  dbo.T_Order_Header.F_Exhibitor, 
 dbo.T_Order_Header.F_Exhibition, 
  dbo.T_Exhibition.F_Exhibition_Name,
 dbo.T_Exhibitor.F_Exhibitor_Name,
 dbo.T_Order_Detail.F_ItemCode,
 dbo.T_L2Category.F_L2Cat_Name, 
 dbo.T_L1Category.F_L1Cat_Name,
 dbo.T_Order_Header.F_Stand,
 dbo.T_Category.F_Cat_name,
 dbo.T_ExStand.F_Bld_Code, 
 dbo.T_ExBuilding.F_Bld_name  

根据您的要求使用以下查询

SELECT  DISTINCT  
    dbo.T_Order_Header.F_Exhibitor, 
    dbo.T_Order_Header.F_Exhibition, 
    dbo.T_Exhibition.F_Exhibition_Name,
    dbo.T_Exhibitor.F_Exhibitor_Name,
    dbo.T_Order.F_ItemCode,
    dbo.T_L2Category.F_L2Cat_Name, 
    T_Order.F_Qty F_Qty,
    dbo.T_L1Category.F_L1Cat_Name,
    dbo.T_Order_Header.F_Stand,
    dbo.T_Category.F_Cat_name,
    dbo.T_ExStand.F_Bld_Code, 
    dbo.T_ExBuilding.F_Bld_name  
FROM dbo.T_Order_Header 
LEFT OUTER JOIN dbo.T_OrderAttachment 
    ON dbo.T_OrderAttachment.F_OrderNumber  = dbo.T_Order_Header.F_OrderNumber 
LEFT OUTER JOIN 
(select  SUM(dbo.T_Order_Detail.F_Qty)-sum(dbo.T_Order_Detail.F_CNQty) AS F_Qty,
    [Header_ID],F_ItemCode from
     dbo.T_Order_Detail 
     group by 
     [Header_ID]) T_Order   ON dbo.T_Order.[Header_ID] = dbo.T_Order_Header.[ID]
LEFT OUTER JOIN dbo.T_L2Category 
    ON dbo.F_ItemCode.F_ItemCode = dbo.T_L2Category.F_ItemCode
LEFT OUTER JOIN dbo.T_L1Category 
    ON dbo.T_L1Category.F_L1Cat_Code  = dbo.T_L2Category.F_L1Cat_Code
LEFT OUTER JOIN dbo.T_Category 
    ON dbo.T_Category.F_Cat_Code = dbo.T_L2Category.F_Cat_Code
LEFT OUTER JOIN dbo.T_ExStand  
    ON dbo.T_ExStand.F_Stand_Code = dbo.T_Order_Header.F_Stand
LEFT OUTER JOIN dbo.T_ExBuilding  
    ON dbo.T_ExStand.F_Bld_Code = dbo.T_ExBuilding.F_Bld_Code
LEFT OUTER JOIN dbo.T_Exhibition 
    ON dbo.T_Order_Header.F_Exhibition = dbo.T_Exhibition.F_Exhibition_Code
LEFT OUTER JOIN dbo.T_Exhibitor 
    ON dbo.T_Order_Header.F_Exhibitor = dbo.T_Exhibitor.F_Exhibitor_Code 
WHERE
    F_Stand IN(
        SELECT F_Stand_Code 
        FROM T_ExStand 
        WHERE
            F_Site_Code ='DWTC' 
            AND F_Bld_Code = 'HALL1-4 & CONCOURSE'
    )
    AND T_Order_Header.F_Exhibition = '12004'
    AND T_Order_Header.F_IsActive = 1 
    AND F_Exhibitor='2467'

您正在使用SQL
group
函数。在这种情况下,必须在sql语句的末尾添加
GROUPBY
子句。请将所有通用列添加到
分组依据
子句中,但
F\U数量
除外。并从select语句中删除
DISTINCT

请发布错误。如果我添加sum,我会得到如下错误:“dbo.T\u Order\u Header.F\u Exhibitor”列在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。发布包含
sum
的查询,由于出现错误,您的
选择中甚至没有
总和。你怎么会出错?我编辑了我的问题嗨,,,这也不能解决我的问题。是否有任何方法可以只获取没有distinct的项目代码?尝试删除此中的distinct关键字…没有mam..这也不能解决我的问题。实际上,如果我在查询中添加dbo.T_Order_Header.F_OrderNumber,我的问题将得到解决。但我不想显示此文件DMSG 102,级别15,状态1,第20行“.”附近的语法不正确。Msg 156,级别15,状态1,第45行关键字“和”附近的语法不正确。@jasbacker让我知道F_列是否代表t_顺序_详情表?不,先生..F_顺序不正确Details@jasbacker事实上,我错过了订单明细表前的陈述。请在dbo.T\u订单详细信息之前使用。