Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 MIN(F_Exhibition_Name) AS F_Site_name, (SELECT SUM(F_Quantity) FROM T_assets WHERE T_assets.F_ref_code = T_Item_movement.ItemCode AND F_State = 'A') AS openingqty, CASE WHEN dbo.T_Item_Movement.F_Status = 1 AND

我有这样一个问题:

SELECT
  MIN(F_Exhibition_Name) AS F_Site_name,
  (SELECT
    SUM(F_Quantity)
  FROM T_assets
  WHERE T_assets.F_ref_code = T_Item_movement.ItemCode
  AND F_State = 'A')
  AS openingqty,
  CASE
    WHEN dbo.T_Item_Movement.F_Status = 1 AND
      dbo.T_Item_Movement.F_Site_Code <> dbo.T_Item_Movement.F_Frm_Site_Code THEN SUM(dbo.T_Item_Movement.F_Quantity)
    ELSE 0
  END,
  CASE
    WHEN dbo.T_Item_Movement.F_Status = 2 AND
      dbo.T_Item_Movement.F_Site_Code <> dbo.T_Item_Movement.F_Frm_Site_Code THEN SUM(dbo.T_Item_Movement.F_Quantity)
    ELSE 0
  END
FROM T_Item_movement
LEFT OUTER JOIN T_L2Category
  ON T_L2Category.F_ItemCode = T_Item_movement.ItemCode
LEFT OUTER JOIN T_Exhibition
  ON T_Exhibition.F_Exhibition_Code = T_Item_movement.F_Site_Code
WHERE F_Cat_code = 'FN'
--AND F_Cat_code IN ('EC', 'EL', 'FL', 'FN', 'GR', 'MX', 'OT', 'SH')
AND F_L1Cat_code = 'TT'
AND itemcode = 'TT015-BLK'
AND CONVERT(varchar(10), F_datetime, 112) >= '20130915'
AND CONVERT(varchar(10), F_datetime, 112) <= '20150915'
AND F_Exhibition_Name IS NOT NULL
GROUP BY ItemCode,
         dbo.T_Item_Movement.F_Status,
         dbo.T_Item_Movement.F_Site_Code,
         dbo.T_Item_Movement.F_Frm_Site_Code
是GROUP BY列导致了这种情况

您可以通过以下方式更改CASE语句以对结果求和,从而删除组中的某些列:


您的未命名列需要在F_Site_Name上聚合和分组。这两行必须具有不同的F_状态、F_站点代码或F_Frm_站点代码这工作正常..我不需要列名?那么我将如何重写?您在我的查询中做了哪些更改?没有列名称,如col1、col2。查询将不起作用。如果没有列名,则无法在其他查询或应用程序中使用结果
Gulf class 2015    6    5
ATM 2015           0     3
    SELECT F_Site_name, openingqty, 
    SUM(col1) AS col1, SUM(col2) AS col2
    FROM
    (
    SELECT
      MIN(F_Exhibition_Name) AS F_Site_name,
      (SELECT
        SUM(F_Quantity)
      FROM T_assets
      WHERE T_assets.F_ref_code = T_Item_movement.ItemCode
      AND F_State = 'A')
      AS openingqty,
      CASE
        WHEN dbo.T_Item_Movement.F_Status = 1 AND
          dbo.T_Item_Movement.F_Site_Code <> dbo.T_Item_Movement.F_Frm_Site_Code THEN SUM(dbo.T_Item_Movement.F_Quantity)
        ELSE 0
      END AS col1,
      CASE
        WHEN dbo.T_Item_Movement.F_Status = 2 AND
          dbo.T_Item_Movement.F_Site_Code <> dbo.T_Item_Movement.F_Frm_Site_Code THEN SUM(dbo.T_Item_Movement.F_Quantity)
        ELSE 0
      END AS col2
    FROM T_Item_movement
    LEFT OUTER JOIN T_L2Category
      ON T_L2Category.F_ItemCode = T_Item_movement.ItemCode
    LEFT OUTER JOIN T_Exhibition
      ON T_Exhibition.F_Exhibition_Code = T_Item_movement.F_Site_Code
    WHERE F_Cat_code = 'FN'
    --AND F_Cat_code IN ('EC', 'EL', 'FL', 'FN', 'GR', 'MX', 'OT', 'SH')
    AND F_L1Cat_code = 'TT'
    AND itemcode = 'TT015-BLK'
    AND CONVERT(varchar(10), F_datetime, 112) >= '20130915'
    AND CONVERT(varchar(10), F_datetime, 112) <= '20150915'
    AND F_Exhibition_Name IS NOT NULL
    GROUP BY ItemCode,
             dbo.T_Item_Movement.F_Status,
             dbo.T_Item_Movement.F_Site_Code,
             dbo.T_Item_Movement.F_Frm_Site_Code
    ) AS t
GROUP BY F_Site_name, openingqty
...
SUM(CASE WHEN dbo.T_Item_Movement.F_Status = 1 AND ...
       THEN dbo.T_Item_Movement.F_Quantity
       ELSE 0
  END),

...

GROUP BY ItemCode