如何使用update with group by Sql查询求和和和减去值?
我的表格:如何使用update with group by Sql查询求和和和减去值?,sql,sql-server,group-by,sql-update,Sql,Sql Server,Group By,Sql Update,我的表格: item_name Qty item_area Belts 2 India Shoes 20 US T-Shirt 10 India T-Shirt 12 US T-Shirt 25 US 我通过查询选择分组来获取此信息 SELECT item_name, Sum(item_qty) as Qty, item_area FROM dbo.item_st
item_name Qty item_area
Belts 2 India
Shoes 20 US
T-Shirt 10 India
T-Shirt 12 US
T-Shirt 25 US
我通过查询选择分组来获取此信息
SELECT item_name, Sum(item_qty) as Qty, item_area
FROM dbo.item_stocks
group by item_area, item_name
我的输出如下:
item_name Qty item_area
Belts 2 India
Shoes 20 US
T-Shirt 10 India
T-Shirt 37 US
现在我需要减法和更新。我怎么做?
例如,我想减去5件T恤,它会在我的表格中更新吗
T恤=37-5=32
如何在MyTable中更新?您可以尝试使用
行数
窗口函数选择要减去的任何一行
;WITH CTE AS (
SELECT *,ROW_NUMBER() over(PARTITION BY item_name,item_area order by Qty desc)rn
FROM item_stocks
)
update CTE
set Qty = Qty - 5
where rn = 1 and item_name = 'T-Shirt' and item_area = 'US'
SELECT item_name, Sum(Qty) as Qty, item_area
FROM item_stocks
group by item_area, item_name
您可以尝试使用
ROW\u NUMBER
window函数选择要减去的任何一行
;WITH CTE AS (
SELECT *,ROW_NUMBER() over(PARTITION BY item_name,item_area order by Qty desc)rn
FROM item_stocks
)
update CTE
set Qty = Qty - 5
where rn = 1 and item_name = 'T-Shirt' and item_area = 'US'
SELECT item_name, Sum(Qty) as Qty, item_area
FROM item_stocks
group by item_area, item_name
只需添加一个表示in/Out的列,比如INOUT 不更新行,只为股票销售添加新行 这里, INOUT=1表示输入,2表示输出 表结构类
item_name Qty item_area INOUT
Belts 2 India 1
Shoes 20 US 1
T-Shirt 10 India 1
T-Shirt 12 US 1
T-Shirt 25 US 1
T-Shirt 5 US 2
现在您的查询看起来是这样的
SELECT item_name,
Sum(case when INOUT = 1 then item_qty else (0-item_qty) end) as Qty,
item_area
FROM dbo.item_stocks
group by item_area, item_name
只需添加一个表示in/Out的列,比如INOUT 不更新行,只为股票销售添加新行 这里, INOUT=1表示输入,2表示输出 表结构类
item_name Qty item_area INOUT
Belts 2 India 1
Shoes 20 US 1
T-Shirt 10 India 1
T-Shirt 12 US 1
T-Shirt 25 US 1
T-Shirt 5 US 2
现在您的查询看起来是这样的
SELECT item_name,
Sum(case when INOUT = 1 then item_qty else (0-item_qty) end) as Qty,
item_area
FROM dbo.item_stocks
group by item_area, item_name
您能否提供您的预期输出,以显示您的mytable在更新后将如何处理?您-5将在什么基础上更新我们的两行???@fa06我不知道,但我需要在求和后进行处理32@nikhilsugandh这仅适用于样本,我可以提供您将更新的行的任何值,有
Qty=12
或Qty=25
的那一个?您能否提供您的预期输出,以显示您的mytable在更新后将如何处理?在什么基础上,您-5将更新我们的两行???@fa06我不知道,但我需要在求和后处理32@nikhilsugandh这仅适用于样本,我可以提供您将更新的行的任何值,有Qty=12
或Qty=25
的那一个??