Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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,我有一个查询,它返回我的每个分支中的数量。现在分支有两个WH_子类型,如我随附的图表所示。我想对2个子类型求和并显示其可用数量。我该怎么做呢 我的select查询如下 SELECT dbo.WarehouseType.name AS Section, dbo.WarehouseSubType.name AS WH_Type, dbo.WarehouseSubType1.name

我有一个查询,它返回我的每个分支中的数量。现在分支有两个WH_子类型,如我随附的图表所示。我想对2个子类型求和并显示其可用数量。我该怎么做呢

我的select查询如下

SELECT
dbo.WarehouseType.name                        AS Section,
dbo.WarehouseSubType.name                     AS WH_Type,
dbo.WarehouseSubType1.name                    AS WH_SubType,
dbo.Branch.name                               AS Branch,
(dbo.WarehouseProductQuantity.actualQuantity - dbo.WarehouseProductQuantity.reservedQuantity) AS AvailQty,
dbo.WarehouseProductQuantity.tafsilId         AS Tafsil,
dbo.Tafsil.description                        AS Product_Name
FROM
dbo.WarehouseSubType
INNER JOIN
dbo.WarehouseType
ON
(
    dbo.WarehouseSubType.warehouseTypeId = dbo.WarehouseType.id)
INNER JOIN
dbo.WarehouseSubType1
ON
(
     dbo.WarehouseSubType.id = dbo.WarehouseSubType1.warehouseSubTypeId)
INNER JOIN
dbo.Warehouse
ON
(
    dbo.WarehouseSubType1.id = dbo.Warehouse.warehouseSubType1Id)
INNER JOIN
dbo.Branch
ON
(
    dbo.Warehouse.branchId = dbo.Branch.id)
INNER JOIN
dbo.WarehouseProductQuantity
ON
(
    dbo.Warehouse.id = dbo.WarehouseProductQuantity.warehouseId)
INNER JOIN
dbo.TafsilLink
ON
(
    dbo.WarehouseProductQuantity.tafsilId = dbo.TafsilLink.sourceId)
INNER JOIN
dbo.Tafsil
ON
(
    dbo.TafsilLink.targetId = dbo.Tafsil.id)
INNER JOIN
dbo.FinishProduct
ON
(
    dbo.Tafsil.id = dbo.FinishProduct.tafsilId)
INNER JOIN
dbo.Supplier
ON
(
    dbo.FinishProduct.supplierId = dbo.Supplier.tafsilId)
WHERE
WarehouseSubType1.warehouseSubTypeId IN (1,4)
group by dbo.WarehouseProductQuantity.tafsilId

你试过一组吗

SELECT SubType, SUM(qty) AS QtySum
GROUP BY SubType
每个按列分组的列都应该在您的select中。注意:对于按其分组的每一列,进一步细分数据

根据OP评论进行更新: 如果需要其他列,则需要执行以下操作

SELECT s.WH_SubType,s.AvailQty, t.other_cols
from
(SELECT
dbo.WarehouseSubType1.name                    AS WH_SubType,
sum(dbo.WarehouseProductQuantity.actualQuantity -    dbo.WarehouseProductQuantity.reservedQuantity) AS AvailQty
FROM
table
GROUP BY
dbo.WarehouseSubType1.name) s
left join table t on t.dbo.WarehouseSubType1.name = s.WH_SubType;
有关参考信息,请参见此问题:

更新2:

SELECT
dbo.WarehouseType.name                        AS Section,
dbo.WarehouseSubType.name                     AS WH_Type,
dbo.WarehouseSubType1.name                    AS WH_SubType,
dbo.Branch.name                               AS Branch,
SumTable.AvailQty,
SumTable.Tafsil,
dbo.Tafsil.description                        AS Product_Name
FROM
dbo.WarehouseSubType
INNER JOIN
dbo.WarehouseType
ON
(
    dbo.WarehouseSubType.warehouseTypeId = dbo.WarehouseType.id)
INNER JOIN
dbo.WarehouseSubType1
ON
(
     dbo.WarehouseSubType.id = dbo.WarehouseSubType1.warehouseSubTypeId)
INNER JOIN
dbo.Warehouse
ON
(
    dbo.WarehouseSubType1.id = dbo.Warehouse.warehouseSubType1Id)
INNER JOIN
dbo.Branch
ON
(
    dbo.Warehouse.branchId = dbo.Branch.id)
INNER JOIN
dbo.WarehouseProductQuantity
ON
(
    dbo.Warehouse.id = dbo.WarehouseProductQuantity.warehouseId)
INNER JOIN
dbo.TafsilLink
ON
(
    dbo.WarehouseProductQuantity.tafsilId = dbo.TafsilLink.sourceId)
INNER JOIN
dbo.Tafsil
ON
(
    dbo.TafsilLink.targetId = dbo.Tafsil.id)
INNER JOIN
dbo.FinishProduct
ON
(
    dbo.Tafsil.id = dbo.FinishProduct.tafsilId)
LEFT JOIN (SELECT
sum(dbo.WarehouseProductQuantity.actualQuantity - dbo.WarehouseProductQuantity.reservedQuantity) AS AvailQty,
dbo.WarehouseProductQuantity.tafsilId         AS Tafsil
FROM
dbo.WarehouseProductQuantity
group by dbo.WarehouseProductQuantity.tafsilId) SumTable on dbo.Tafsil.id = SumTable.Tafsil
WHERE
WarehouseSubType1.warehouseSubTypeId IN (1,4)

你需要像这样做

SELECT SUM(AvailQty), ... FROM ... WHERE ... GROUP BY WH_SubType

http://www.w3schools.com/sql/sql_groupby.asp

很难从你的问题中看出你想要什么。因为您尚未提供测试数据和所需的输出。但是,似乎您只需要按
分组
@Igor我需要分组哪个列>>因为您没有提供测试数据测试数据在图片中。>>和期望输出。我想将product col的WH_子类型col的AvailQty单元格添加到同一个分支col.@MahmoudGamal您的意思是什么?表的其余部分在哪里?我需要按Tafsil.id分组分组分组。分组依据需要是一个以其自身权限联接的子查询。我已编辑了我的问题,并添加了完整的查询以使事情更清楚。正如您所提到的,我添加了group by,但出现错误“列'dbo.WarehouseType.name'在选择列表中无效,因为它未包含在聚合函数或group by子句中。”请参阅我的更新-您需要执行子查询以进行求和,然后将其连接回原始表获取其他列多部分标识符无法绑定“dbo.WarehouseProductQuantity.tafsilId”。2)[错误代码:4104,SQL状态:S1000]无法绑定多部分标识符“dbo.WarehouseProductQuantity.actualQuantity”。3)[错误代码:4104,SQL状态:S1000]无法绑定多部分标识符“dbo.WarehouseProductQuantity.reservedQuantity”。4)[错误代码:4104,SQL状态:S1000]多部分标识符“dbo.WarehouseProductQuantity.tafsilId”无法绑定。我更新了查询-我删除了供应商联接,因为未使用供应商表。谢谢,现在我在选择列表中得到另一个错误列“dbo.WarehouseProductQuantity.actualQuantity”,因为它不包含在聚合函数或GROUP BY子句中。2)[错误代码:8120,SQL状态:S1000]列“dbo.WarehouseProductQuantity.reservedQuantity”在select列表中无效,因为它不包含在聚合函数或GROUP BY子句中。我在select中添加了此总和(可用数量),在GROUP BY中,我通过dbo.Tafsil.id添加了此组,但出现错误列“dbo.WarehouseType.name”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。2)[错误代码:207,SQL状态:42S22]列名“AvailQty”无效