私はこのコードを持っています:
merge dbo.tblProblems as target
using (
select max(problemID), StationName, problemCode, max(ProblemCreateDate), count(*)
from dbo.tblProblems
group by StationName, problemCode
) as source(id, StationName, problemCode, maxdate, rowcount)
on (
target.problemID = source.problemID
and target.StationName = target.StationName
and target.problemCode = target.problemCode
)
when matched then
update set ProblemCreateDate = maxdate, probCount = rowcount
when not matched then delete ;
しかし、次のエラーが発生します。
メッセージ 156、レベル 15、状態 1、行 6
キーワード「rowcount」付近の構文が正しくありません。
そして、このバージョンのクエリ:
;WITH n AS
(
SELECT problemID, StationName, problemCode, ProblemCreateDate, probCount
c = COUNT(*) OVER (PARTITION BY StationName, problemCode),
rn = ROW_NUMBER() OVER
(
PARTITION BY StationName, problemCode ORDER BY ProblemCreateDate DESC, problemID DESC
)
FROM dbo.tblProblems
)
--SELECT problemID, StationName, problemCode, ProblemCreateDate, c
-- FROM n WHERE rn = 1;
UPDATE n SET probCount = c
WHERE rn = 1;
次のエラーが発生します。
メッセージ 102、レベル 15、状態 1、行 4
「=」付近の構文が正しくありません。