gpt4 book ai didi

sql - 如何执行 Upsert Into Table?

转载 作者:行者123 更新时间:2023-12-05 00:27:18 25 4
gpt4 key购买 nike

我有一个 View ,其中有一个工作列表,其中包含他们被分配给谁以及他们所处阶段等数据。我需要编写一个存储过程来返回每个人在每个阶段拥有的工作数量.

到目前为止我有这个(简化):

DECLARE @ResultTable table 
(
StaffName nvarchar(100),
Stage1Count int,
Stage2Count int
)

INSERT INTO @ResultTable (StaffName, Stage1Count)
SELECT StaffName, COUNT(*) FROM ViewJob
WHERE InStage1 = 1
GROUP BY StaffName

INSERT INTO @ResultTable (StaffName, Stage2Count)
SELECT StaffName, COUNT(*) FROM ViewJob
WHERE InStage2 = 1
GROUP BY StaffName

问题是行没有合并。因此,如果员工在 stage1 和 stage2 中有工作,则@ResultTable 中有两行。我真正想做的是更新工作人员所在的行,如果不存在则插入一个新行。

有谁知道如何做到这一点,或者可以建议不同的方法?我真的很想避免使用游标来迭代用户列表(但这是我的后备选项)。

我正在使用 SQL Server 2005。

编辑:@Lee:不幸的是 InStage1 = 1 是一种简化。它实际上更像是 WHERE DateStarted IS NOT NULL 和 DateFinished IS NULL。

编辑:@BCS: 我喜欢先插入所有员工的想法,这样我每次都只需要进行更新。但我正在努力使这些 UPDATE 语句正确。

最佳答案

实际上,我认为你让它变得比实际更难。这段代码不能用于您要执行的操作吗?

SELECT StaffName, SUM(InStage1) AS 'JobsAtStage1', SUM(InStage2) AS 'JobsAtStage2'
FROM ViewJob
GROUP BY StaffName

关于sql - 如何执行 Upsert Into Table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com