下面的SELECT語句返回正確的數據。帶有CASE,GROUP BY和HAVING的SQL UPDATE
SELECT stu.sc, stu.sn, COUNT(*) AS Total,
CASE
WHEN COUNT(*) = 3 Then 'Letter 1'
WHEN COUNT(*) = 4 Then 'Letter 2'
WHEN COUNT(*) = 5 Then 'Letter 3'
ELSE 'SARB'
END AS Letter
FROM STU join att ON (stu.SC = att.SC and stu.SN = att.SN)
WHERE att.al in ('c','t','u')
GROUP by stu.sc, stu.sn
HAVING COUNT(*) >= 3
我需要執行基於該查詢的更新,我似乎無法弄清楚。我在網上查看了多個與我需要的示例類似的示例,但我無法使其工作。我需要能夠做這樣的事情...
UPDATE stu
SET stu.tru =
CASE
When COUNT(*) = 3 Then 'Letter 1'
When COUNT(*) = 4 Then 'Letter 2'
When COUNT(*) = 5 Then 'Letter 3'
ELSE 'SARB'
END
FROM stu JOIN att
on (stu.sc = att.sc and stu.sn = att.sn)
WHERE ATT.AL in ('c','t','u')
GROUP BY stu.sc, stu.sn
HAVING COUNT(*) >= 3
我知道我不能使用GROUP BY和有直接的更新語句,但我看到他們用與集團選擇的例子通過設置和加入之前。我無法讓它工作。
感謝您的任何幫助。
您正在使用什麼版本的SQL服務器的? 2000? 2005年? 2008年? – 2012-08-14 23:48:26
我在下面看到你的回覆,但我會更新這個。我正在使用SQL Server 2008.謝謝。 – 2012-08-15 02:32:47