關閉
標題:V_MTRREAD
內容:
/*
舊寫法
WITH V_MTRLOC_dedup AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY interface_id, sqnc ORDER BY (SELECT NULL)) AS rn
FROM dbo.V_MTRLOC
),
All_MtrRead AS (
SELECT interface_id, sqnc, rcvtime, value_i, value_c, sgnl_type
FROM dbo.mtrread_l2
)
SELECT
V.mtrname, V.unit_id, V.ctgr, V.sttn_id, V.sttn_name, V.lat, V.lng, V.unit_name,
M.interface_id, M.sqnc, M.rcvtime,
M.value_i, M.value_c, M.sgnl_type, V.rm,
dbo.FN_CONVERT_TO_DATETIME(M.rcvtime) AS RCV
FROM All_MtrRead M
INNER JOIN V_MTRLOC_dedup V
ON M.interface_id = V.interface_id
AND M.sqnc = V.sqnc
AND V.rn = 1
*/
WITH V_MTRLOC_dedup AS (
SELECT interface_id, sqnc, mtrname, unit_id, ctgr, sttn_id,
sttn_name, lat, lng, unit_name, rm
FROM (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY interface_id, sqnc
ORDER BY mtrloc_id DESC -- 明確排序
) rn
FROM dbo.V_MTRLOC
) A
WHERE rn = 1
)
SELECT
V.mtrname, V.unit_id, V.ctgr, V.sttn_id, V.sttn_name, V.lat, V.lng, V.unit_name,
M.interface_id, M.sqnc, M.rcvtime,
M.value_i, M.value_c, M.sgnl_type,
V.rm,
dbo.FN_CONVERT_TO_DATETIME(M.rcvtime) AS RCV
FROM dbo.mtrread_l2 M
INNER JOIN V_MTRLOC_dedup V
ON M.interface_id = V.interface_id
AND M.sqnc = V.sqnc;