我正在嘗試創建一個存儲過程,用於將呼叫分配給呼叫者。我們有幾個由變量@team_id標識的調用者小組。我想要做的是檢查並確定客戶(@code)是否有人分配給他們。如果他們這樣做,則返回該人的ID。如果沒有,請運行THEN語句來確定應將其分配給誰,將記錄更新爲該調用方,然後返回該調用方的標識。這是我的,但它不會讓我運行選擇內的更新。如果可以的話,我想避免每次更新表(將更新子句添加到存儲過程的末尾)。案例中的SQL Server 2008更新
declare @team_id char(3), @code char(4)
--If team is an intake department
if (@team_id IN ('03V', '09X'))
SELECT
CASE
WHEN a.intake_caller_id IS NOT NULL and a.intake_caller_id <> '' THEN a.intake_caller_id
ELSE
(
SELECT employee_id
FROM
(
SELECT TOP 1 COUNT(a.id) as count, a.employee_id
FROM event.dbo.event a
JOIN event.dbo.event_triage b ON a.employee_id = b.employee_id
WHERE task_id in ('WS', 'WF', 'WT', 'WU') and a.status = 1 AND b.team_id = @team_id
GROUP BY a.employee_id
ORDER BY count ASC
) a
update event.dbo.referral_data
SET intake_caller_id = a.employee_id
WHERE CODE_ = @code
)
END
FROM event.dbo.referral_data a
WHERE CODE_ = @code
ELSE
--if team is a PO department
IF (@team_id IN ('00R', '154'))
SELECT
CASE
WHEN @team_id = '00R' AND intake_rx_caller_id IS NOT NULL AND intake_rx_caller_id <> '' THEN intake_rx_caller_id
WHEN @team_id = '00R' AND (intake_rx_caller_id IS NULL OR intake_rx_caller_id = '') THEN
(
SELECT employee_id
FROM
(
SELECT top 1 COUNT(a.id) as count, a.employee_id
FROM event.dbo.event a
JOIN event.dbo.event_triage b ON a.employee_id = b.employee_id
WHERE task_id IN ('WR', 'CR') AND status = 1 and b.team_id = '00R'
GROUP BY a.employee_id
ORDER BY count ASC
) a
)
WHEN @team_id = '154' AND reorder_rx_caller_id IS NOT NULL AND reorder_rx_caller_id <> '' THEN reorder_rx_caller_id
WHEN @team_id = '154' AND (reorder_rx_caller_id IS NULL OR reorder_rx_caller_id = '') THEN
(
SELECT employee_id
FROM
(
SELECT top 1 COUNT(a.id) as count, a.employee_id
FROM event.dbo.event a
JOIN event.dbo.event_triage b ON a.employee_id = b.employee_id
WHERE task_id IN ('RS', 'RY') AND status = 1 and b.team_id = '154'
GROUP BY a.employee_id
ORDER BY count ASC
)a
)
END
FROM event.dbo.doctor_data
WHERE CODE_ = @code
更新不工作,因爲它是內部SELECT。它應該在它之後。 – Farhan