refactor(sql):优化状态定义查询逻辑

- 简化current表和history表的关联方式,使用CROSS JOIN替代复杂的LEFT JOIN
- 移除冗余的字段非空判断条件,提高查询效率
- 调整查询排序逻辑,确保历史数据正确加载-保留完整的CASE表达式以支持多字段映射需求
- 维持原有LIMIT限制,控制返回记录数量
- 更新注释内容,使其更准确反映当前实现逻辑
This commit is contained in:
2025-10-31 13:44:02 +08:00
parent 93cd0e5238
commit e114e7923a

View File

@@ -68,431 +68,75 @@
<result column="historyInsdate" property="historyInsdate" jdbcType="TIMESTAMP"/>
</resultMap>
<select id="selectByValue" resultMap="ValueVoResultMap">
SELECT d.ID,
d.NAME,
d.UNITS,
d.COMMENTS,
d.MODELTYPE,
-- current表对应VALUE{ID}
CASE d.ID
WHEN 1 THEN c.VALUE1
WHEN 2 THEN c.VALUE2
WHEN 3 THEN c.VALUE3
WHEN 4 THEN c.VALUE4
WHEN 5 THEN c.VALUE5
WHEN 6 THEN c.VALUE6
WHEN 7 THEN c.VALUE7
WHEN 8 THEN c.VALUE8
WHEN 9 THEN c.VALUE9
WHEN 10 THEN c.VALUE10
WHEN 11 THEN c.VALUE11
WHEN 12 THEN c.VALUE12
WHEN 13 THEN c.VALUE13
WHEN 14 THEN c.VALUE14
WHEN 15 THEN c.VALUE15
WHEN 16 THEN c.VALUE16
WHEN 17 THEN c.VALUE17
WHEN 18 THEN c.VALUE18
WHEN 19 THEN c.VALUE19
WHEN 20 THEN c.VALUE20
WHEN 21 THEN c.VALUE21
WHEN 22 THEN c.VALUE22
WHEN 23 THEN c.VALUE23
WHEN 24 THEN c.VALUE24
WHEN 25 THEN c.VALUE25
WHEN 26 THEN c.VALUE26
WHEN 27 THEN c.VALUE27
WHEN 28 THEN c.VALUE28
WHEN 29 THEN c.VALUE29
WHEN 30 THEN c.VALUE30
WHEN 31 THEN c.VALUE31
WHEN 32 THEN c.VALUE32
WHEN 33 THEN c.VALUE33
WHEN 34 THEN c.VALUE34
WHEN 35 THEN c.VALUE35
WHEN 36 THEN c.VALUE36
WHEN 37 THEN c.VALUE37
WHEN 38 THEN c.VALUE38
WHEN 39 THEN c.VALUE39
WHEN 40 THEN c.VALUE40
WHEN 41 THEN c.VALUE41
WHEN 42 THEN c.VALUE42
WHEN 43 THEN c.VALUE43
WHEN 44 THEN c.VALUE44
WHEN 45 THEN c.VALUE45
WHEN 46 THEN c.VALUE46
WHEN 47 THEN c.VALUE47
WHEN 48 THEN c.VALUE48
WHEN 49 THEN c.VALUE49
WHEN 50 THEN c.VALUE50
WHEN 51 THEN c.VALUE51
WHEN 52 THEN c.VALUE52
WHEN 53 THEN c.VALUE53
WHEN 54 THEN c.VALUE54
WHEN 55 THEN c.VALUE55
WHEN 56 THEN c.VALUE56
WHEN 57 THEN c.VALUE57
WHEN 58 THEN c.VALUE58
WHEN 59 THEN c.VALUE59
WHEN 60 THEN c.VALUE60
WHEN 61 THEN c.VALUE61
WHEN 62 THEN c.VALUE62
WHEN 63 THEN c.VALUE63
WHEN 64 THEN c.VALUE64
WHEN 65 THEN c.VALUE65
WHEN 66 THEN c.VALUE66
WHEN 67 THEN c.VALUE67
WHEN 68 THEN c.VALUE68
WHEN 69 THEN c.VALUE69
WHEN 70 THEN c.VALUE70
WHEN 71 THEN c.VALUE71
WHEN 72 THEN c.VALUE72
WHEN 73 THEN c.VALUE73
WHEN 74 THEN c.VALUE74
WHEN 75 THEN c.VALUE75
WHEN 76 THEN c.VALUE76
WHEN 77 THEN c.VALUE77
WHEN 78 THEN c.VALUE78
WHEN 79 THEN c.VALUE79
WHEN 80 THEN c.VALUE80
WHEN 81 THEN c.VALUE81
WHEN 82 THEN c.VALUE82
WHEN 83 THEN c.VALUE83
WHEN 84 THEN c.VALUE84
WHEN 85 THEN c.VALUE85
WHEN 86 THEN c.VALUE86
WHEN 87 THEN c.VALUE87
WHEN 88 THEN c.VALUE88
WHEN 89 THEN c.VALUE89
WHEN 90 THEN c.VALUE90
WHEN 91 THEN c.VALUE91
WHEN 92 THEN c.VALUE92
WHEN 93 THEN c.VALUE93
WHEN 94 THEN c.VALUE94
WHEN 95 THEN c.VALUE95
WHEN 96 THEN c.VALUE96
WHEN 97 THEN c.VALUE97
WHEN 98 THEN c.VALUE98
WHEN 99 THEN c.VALUE99
ELSE NULL
END AS currentValue,
c.INSDATE AS currentInsdate,
-- history表对应VALUE{ID}
CASE d.ID
WHEN 1 THEN h.VALUE1
WHEN 2 THEN h.VALUE2
WHEN 3 THEN h.VALUE3
WHEN 4 THEN h.VALUE4
WHEN 5 THEN h.VALUE5
WHEN 6 THEN h.VALUE6
WHEN 7 THEN h.VALUE7
WHEN 8 THEN h.VALUE8
WHEN 9 THEN h.VALUE9
WHEN 10 THEN h.VALUE10
WHEN 11 THEN h.VALUE11
WHEN 12 THEN h.VALUE12
WHEN 13 THEN h.VALUE13
WHEN 14 THEN h.VALUE14
WHEN 15 THEN h.VALUE15
WHEN 16 THEN h.VALUE16
WHEN 17 THEN h.VALUE17
WHEN 18 THEN h.VALUE18
WHEN 19 THEN h.VALUE19
WHEN 20 THEN h.VALUE20
WHEN 21 THEN h.VALUE21
WHEN 22 THEN h.VALUE22
WHEN 23 THEN h.VALUE23
WHEN 24 THEN h.VALUE24
WHEN 25 THEN h.VALUE25
WHEN 26 THEN h.VALUE26
WHEN 27 THEN h.VALUE27
WHEN 28 THEN h.VALUE28
WHEN 29 THEN h.VALUE29
WHEN 30 THEN h.VALUE30
WHEN 31 THEN h.VALUE31
WHEN 32 THEN h.VALUE32
WHEN 33 THEN h.VALUE33
WHEN 34 THEN h.VALUE34
WHEN 35 THEN h.VALUE35
WHEN 36 THEN h.VALUE36
WHEN 37 THEN h.VALUE37
WHEN 38 THEN h.VALUE38
WHEN 39 THEN h.VALUE39
WHEN 40 THEN h.VALUE40
WHEN 41 THEN h.VALUE41
WHEN 42 THEN h.VALUE42
WHEN 43 THEN h.VALUE43
WHEN 44 THEN h.VALUE44
WHEN 45 THEN h.VALUE45
WHEN 46 THEN h.VALUE46
WHEN 47 THEN h.VALUE47
WHEN 48 THEN h.VALUE48
WHEN 49 THEN h.VALUE49
WHEN 50 THEN h.VALUE50
WHEN 51 THEN h.VALUE51
WHEN 52 THEN h.VALUE52
WHEN 53 THEN h.VALUE53
WHEN 54 THEN h.VALUE54
WHEN 55 THEN h.VALUE55
WHEN 56 THEN h.VALUE56
WHEN 57 THEN h.VALUE57
WHEN 58 THEN h.VALUE58
WHEN 59 THEN h.VALUE59
WHEN 60 THEN h.VALUE60
WHEN 61 THEN h.VALUE61
WHEN 62 THEN h.VALUE62
WHEN 63 THEN h.VALUE63
WHEN 64 THEN h.VALUE64
WHEN 65 THEN h.VALUE65
WHEN 66 THEN h.VALUE66
WHEN 67 THEN h.VALUE67
WHEN 68 THEN h.VALUE68
WHEN 69 THEN h.VALUE69
WHEN 70 THEN h.VALUE70
WHEN 71 THEN h.VALUE71
WHEN 72 THEN h.VALUE72
WHEN 73 THEN h.VALUE73
WHEN 74 THEN h.VALUE74
WHEN 75 THEN h.VALUE75
WHEN 76 THEN h.VALUE76
WHEN 77 THEN h.VALUE77
WHEN 78 THEN h.VALUE78
WHEN 79 THEN h.VALUE79
WHEN 80 THEN h.VALUE80
WHEN 81 THEN h.VALUE81
WHEN 82 THEN h.VALUE82
WHEN 83 THEN h.VALUE83
WHEN 84 THEN h.VALUE84
WHEN 85 THEN h.VALUE85
WHEN 86 THEN h.VALUE86
WHEN 87 THEN h.VALUE87
WHEN 88 THEN h.VALUE88
WHEN 89 THEN h.VALUE89
WHEN 90 THEN h.VALUE90
WHEN 91 THEN h.VALUE91
WHEN 92 THEN h.VALUE92
WHEN 93 THEN h.VALUE93
WHEN 94 THEN h.VALUE94
WHEN 95 THEN h.VALUE95
WHEN 96 THEN h.VALUE96
WHEN 97 THEN h.VALUE97
WHEN 98 THEN h.VALUE98
WHEN 99 THEN h.VALUE99
ELSE NULL
END AS historyValue,
h.INSDATE AS historyInsdate
SELECT
d.ID,
d.NAME,
d.UNITS,
d.COMMENTS,
d.INSDATE,
d.MODELTYPE,
-- current表的最新值根据define的ID取对应的VALUE字段
CASE d.ID
WHEN 1 THEN c.VALUE1 WHEN 2 THEN c.VALUE2 WHEN 3 THEN c.VALUE3 WHEN 4 THEN c.VALUE4 WHEN 5 THEN c.VALUE5
WHEN 6 THEN c.VALUE6 WHEN 7 THEN c.VALUE7 WHEN 8 THEN c.VALUE8 WHEN 9 THEN c.VALUE9 WHEN 10 THEN c.VALUE10
WHEN 11 THEN c.VALUE11 WHEN 12 THEN c.VALUE12 WHEN 13 THEN c.VALUE13 WHEN 14 THEN c.VALUE14 WHEN 15 THEN c.VALUE15
WHEN 16 THEN c.VALUE16 WHEN 17 THEN c.VALUE17 WHEN 18 THEN c.VALUE18 WHEN 19 THEN c.VALUE19 WHEN 20 THEN c.VALUE20
WHEN 21 THEN c.VALUE21 WHEN 22 THEN c.VALUE22 WHEN 23 THEN c.VALUE23 WHEN 24 THEN c.VALUE24 WHEN 25 THEN c.VALUE25
WHEN 26 THEN c.VALUE26 WHEN 27 THEN c.VALUE27 WHEN 28 THEN c.VALUE28 WHEN 29 THEN c.VALUE29 WHEN 30 THEN c.VALUE30
WHEN 31 THEN c.VALUE31 WHEN 32 THEN c.VALUE32 WHEN 33 THEN c.VALUE33 WHEN 34 THEN c.VALUE34 WHEN 35 THEN c.VALUE35
WHEN 36 THEN c.VALUE36 WHEN 37 THEN c.VALUE37 WHEN 38 THEN c.VALUE38 WHEN 39 THEN c.VALUE39 WHEN 40 THEN c.VALUE40
WHEN 41 THEN c.VALUE41 WHEN 42 THEN c.VALUE42 WHEN 43 THEN c.VALUE43 WHEN 44 THEN c.VALUE44 WHEN 45 THEN c.VALUE45
WHEN 46 THEN c.VALUE46 WHEN 47 THEN c.VALUE47 WHEN 48 THEN c.VALUE48 WHEN 49 THEN c.VALUE49 WHEN 50 THEN c.VALUE50
WHEN 51 THEN c.VALUE51 WHEN 52 THEN c.VALUE52 WHEN 53 THEN c.VALUE53 WHEN 54 THEN c.VALUE54 WHEN 55 THEN c.VALUE55
WHEN 56 THEN c.VALUE56 WHEN 57 THEN c.VALUE57 WHEN 58 THEN c.VALUE58 WHEN 59 THEN c.VALUE59 WHEN 60 THEN c.VALUE60
WHEN 61 THEN c.VALUE61 WHEN 62 THEN c.VALUE62 WHEN 63 THEN c.VALUE63 WHEN 64 THEN c.VALUE64 WHEN 65 THEN c.VALUE65
WHEN 66 THEN c.VALUE66 WHEN 67 THEN c.VALUE67 WHEN 68 THEN c.VALUE68 WHEN 69 THEN c.VALUE69 WHEN 70 THEN c.VALUE70
WHEN 71 THEN c.VALUE71 WHEN 72 THEN c.VALUE72 WHEN 73 THEN c.VALUE73 WHEN 74 THEN c.VALUE74 WHEN 75 THEN c.VALUE75
WHEN 76 THEN c.VALUE76 WHEN 77 THEN c.VALUE77 WHEN 78 THEN c.VALUE78 WHEN 79 THEN c.VALUE79 WHEN 80 THEN c.VALUE80
WHEN 81 THEN c.VALUE81 WHEN 82 THEN c.VALUE82 WHEN 83 THEN c.VALUE83 WHEN 84 THEN c.VALUE84 WHEN 85 THEN c.VALUE85
WHEN 86 THEN c.VALUE86 WHEN 87 THEN c.VALUE87 WHEN 88 THEN c.VALUE88 WHEN 89 THEN c.VALUE89 WHEN 90 THEN c.VALUE90
WHEN 91 THEN c.VALUE91 WHEN 92 THEN c.VALUE92 WHEN 93 THEN c.VALUE93 WHEN 94 THEN c.VALUE94 WHEN 95 THEN c.VALUE95
WHEN 96 THEN c.VALUE96 WHEN 97 THEN c.VALUE97 WHEN 98 THEN c.VALUE98 WHEN 99 THEN c.VALUE99
ELSE NULL END AS currentValue,
c.INSDATE AS currentInsdate,
-- history表的历史值根据define的ID取对应的VALUE字段
CASE d.ID
WHEN 1 THEN h.VALUE1 WHEN 2 THEN h.VALUE2 WHEN 3 THEN h.VALUE3 WHEN 4 THEN h.VALUE4 WHEN 5 THEN h.VALUE5
WHEN 6 THEN h.VALUE6 WHEN 7 THEN h.VALUE7 WHEN 8 THEN h.VALUE8 WHEN 9 THEN h.VALUE9 WHEN 10 THEN h.VALUE10
WHEN 11 THEN h.VALUE11 WHEN 12 THEN h.VALUE12 WHEN 13 THEN h.VALUE13 WHEN 14 THEN h.VALUE14 WHEN 15 THEN h.VALUE15
WHEN 16 THEN h.VALUE16 WHEN 17 THEN h.VALUE17 WHEN 18 THEN h.VALUE18 WHEN 19 THEN h.VALUE19 WHEN 20 THEN h.VALUE20
WHEN 21 THEN h.VALUE21 WHEN 22 THEN h.VALUE22 WHEN 23 THEN h.VALUE23 WHEN 24 THEN h.VALUE24 WHEN 25 THEN h.VALUE25
WHEN 26 THEN h.VALUE26 WHEN 27 THEN h.VALUE27 WHEN 28 THEN h.VALUE28 WHEN 29 THEN h.VALUE29 WHEN 30 THEN h.VALUE30
WHEN 31 THEN h.VALUE31 WHEN 32 THEN h.VALUE32 WHEN 33 THEN h.VALUE33 WHEN 34 THEN h.VALUE34 WHEN 35 THEN h.VALUE35
WHEN 36 THEN h.VALUE36 WHEN 37 THEN h.VALUE37 WHEN 38 THEN h.VALUE38 WHEN 39 THEN h.VALUE39 WHEN 40 THEN h.VALUE40
WHEN 41 THEN h.VALUE41 WHEN 42 THEN h.VALUE42 WHEN 43 THEN h.VALUE43 WHEN 44 THEN h.VALUE44 WHEN 45 THEN h.VALUE45
WHEN 46 THEN h.VALUE46 WHEN 47 THEN h.VALUE47 WHEN 48 THEN h.VALUE48 WHEN 49 THEN h.VALUE49 WHEN 50 THEN h.VALUE50
WHEN 51 THEN h.VALUE51 WHEN 52 THEN h.VALUE52 WHEN 53 THEN h.VALUE53 WHEN 54 THEN h.VALUE54 WHEN 55 THEN h.VALUE55
WHEN 56 THEN h.VALUE56 WHEN 57 THEN h.VALUE57 WHEN 58 THEN h.VALUE58 WHEN 59 THEN h.VALUE59 WHEN 60 THEN h.VALUE60
WHEN 61 THEN h.VALUE61 WHEN 62 THEN h.VALUE62 WHEN 63 THEN h.VALUE63 WHEN 64 THEN h.VALUE64 WHEN 65 THEN h.VALUE65
WHEN 66 THEN h.VALUE66 WHEN 67 THEN h.VALUE67 WHEN 68 THEN h.VALUE68 WHEN 69 THEN h.VALUE69 WHEN 70 THEN h.VALUE70
WHEN 71 THEN h.VALUE71 WHEN 72 THEN h.VALUE72 WHEN 73 THEN h.VALUE73 WHEN 74 THEN h.VALUE74 WHEN 75 THEN h.VALUE75
WHEN 76 THEN h.VALUE76 WHEN 77 THEN h.VALUE77 WHEN 78 THEN h.VALUE78 WHEN 79 THEN h.VALUE79 WHEN 80 THEN h.VALUE80
WHEN 81 THEN h.VALUE81 WHEN 82 THEN h.VALUE82 WHEN 83 THEN h.VALUE83 WHEN 84 THEN h.VALUE84 WHEN 85 THEN h.VALUE85
WHEN 86 THEN h.VALUE86 WHEN 87 THEN h.VALUE87 WHEN 88 THEN h.VALUE88 WHEN 89 THEN h.VALUE89 WHEN 90 THEN h.VALUE90
WHEN 91 THEN h.VALUE91 WHEN 92 THEN h.VALUE92 WHEN 93 THEN h.VALUE93 WHEN 94 THEN h.VALUE94 WHEN 95 THEN h.VALUE95
WHEN 96 THEN h.VALUE96 WHEN 97 THEN h.VALUE97 WHEN 98 THEN h.VALUE98 WHEN 99 THEN h.VALUE99
ELSE NULL END AS historyValue,
h.INSDATE AS historyInsdate
FROM klptcm1_pro_plant_state_define d
-- 关联current表只匹配ID对应的VALUE字段且该字段非空
LEFT JOIN klptcm1_pro_plant_state_current c
ON d.MODELTYPE = c.TYPE
AND (
(d.ID = 1 AND c.VALUE1 IS NOT NULL) OR
(d.ID = 2 AND c.VALUE2 IS NOT NULL) OR
(d.ID = 3 AND c.VALUE3 IS NOT NULL) OR
(d.ID = 4 AND c.VALUE4 IS NOT NULL) OR
(d.ID = 5 AND c.VALUE5 IS NOT NULL) OR
(d.ID = 6 AND c.VALUE6 IS NOT NULL) OR
(d.ID = 7 AND c.VALUE7 IS NOT NULL) OR
(d.ID = 8 AND c.VALUE8 IS NOT NULL) OR
(d.ID = 9 AND c.VALUE9 IS NOT NULL) OR
(d.ID = 10 AND c.VALUE10 IS NOT NULL) OR
(d.ID = 11 AND c.VALUE11 IS NOT NULL) OR
(d.ID = 12 AND c.VALUE12 IS NOT NULL) OR
(d.ID = 13 AND c.VALUE13 IS NOT NULL) OR
(d.ID = 14 AND c.VALUE14 IS NOT NULL) OR
(d.ID = 15 AND c.VALUE15 IS NOT NULL) OR
(d.ID = 16 AND c.VALUE16 IS NOT NULL) OR
(d.ID = 17 AND c.VALUE17 IS NOT NULL) OR
(d.ID = 18 AND c.VALUE18 IS NOT NULL) OR
(d.ID = 19 AND c.VALUE19 IS NOT NULL) OR
(d.ID = 20 AND c.VALUE20 IS NOT NULL) OR
(d.ID = 21 AND c.VALUE21 IS NOT NULL) OR
(d.ID = 22 AND c.VALUE22 IS NOT NULL) OR
(d.ID = 23 AND c.VALUE23 IS NOT NULL) OR
(d.ID = 24 AND c.VALUE24 IS NOT NULL) OR
(d.ID = 25 AND c.VALUE25 IS NOT NULL) OR
(d.ID = 26 AND c.VALUE26 IS NOT NULL) OR
(d.ID = 27 AND c.VALUE27 IS NOT NULL) OR
(d.ID = 28 AND c.VALUE28 IS NOT NULL) OR
(d.ID = 29 AND c.VALUE29 IS NOT NULL) OR
(d.ID = 30 AND c.VALUE30 IS NOT NULL) OR
(d.ID = 31 AND c.VALUE31 IS NOT NULL) OR
(d.ID = 32 AND c.VALUE32 IS NOT NULL) OR
(d.ID = 33 AND c.VALUE33 IS NOT NULL) OR
(d.ID = 34 AND c.VALUE34 IS NOT NULL) OR
(d.ID = 35 AND c.VALUE35 IS NOT NULL) OR
(d.ID = 36 AND c.VALUE36 IS NOT NULL) OR
(d.ID = 37 AND c.VALUE37 IS NOT NULL) OR
(d.ID = 38 AND c.VALUE38 IS NOT NULL) OR
(d.ID = 39 AND c.VALUE39 IS NOT NULL) OR
(d.ID = 40 AND c.VALUE40 IS NOT NULL) OR
(d.ID = 41 AND c.VALUE41 IS NOT NULL) OR
(d.ID = 42 AND c.VALUE42 IS NOT NULL) OR
(d.ID = 43 AND c.VALUE43 IS NOT NULL) OR
(d.ID = 44 AND c.VALUE44 IS NOT NULL) OR
(d.ID = 45 AND c.VALUE45 IS NOT NULL) OR
(d.ID = 46 AND c.VALUE46 IS NOT NULL) OR
(d.ID = 47 AND c.VALUE47 IS NOT NULL) OR
(d.ID = 48 AND c.VALUE48 IS NOT NULL) OR
(d.ID = 49 AND c.VALUE49 IS NOT NULL) OR
(d.ID = 50 AND c.VALUE50 IS NOT NULL) OR
(d.ID = 51 AND c.VALUE51 IS NOT NULL) OR
(d.ID = 52 AND c.VALUE52 IS NOT NULL) OR
(d.ID = 53 AND c.VALUE53 IS NOT NULL) OR
(d.ID = 54 AND c.VALUE54 IS NOT NULL) OR
(d.ID = 55 AND c.VALUE55 IS NOT NULL) OR
(d.ID = 56 AND c.VALUE56 IS NOT NULL) OR
(d.ID = 57 AND c.VALUE57 IS NOT NULL) OR
(d.ID = 58 AND c.VALUE58 IS NOT NULL) OR
(d.ID = 59 AND c.VALUE59 IS NOT NULL) OR
(d.ID = 60 AND c.VALUE60 IS NOT NULL) OR
(d.ID = 61 AND c.VALUE61 IS NOT NULL) OR
(d.ID = 62 AND c.VALUE62 IS NOT NULL) OR
(d.ID = 63 AND c.VALUE63 IS NOT NULL) OR
(d.ID = 64 AND c.VALUE64 IS NOT NULL) OR
(d.ID = 65 AND c.VALUE65 IS NOT NULL) OR
(d.ID = 66 AND c.VALUE66 IS NOT NULL) OR
(d.ID = 67 AND c.VALUE67 IS NOT NULL) OR
(d.ID = 68 AND c.VALUE68 IS NOT NULL) OR
(d.ID = 69 AND c.VALUE69 IS NOT NULL) OR
(d.ID = 70 AND c.VALUE70 IS NOT NULL) OR
(d.ID = 71 AND c.VALUE71 IS NOT NULL) OR
(d.ID = 72 AND c.VALUE72 IS NOT NULL) OR
(d.ID = 73 AND c.VALUE73 IS NOT NULL) OR
(d.ID = 74 AND c.VALUE74 IS NOT NULL) OR
(d.ID = 75 AND c.VALUE75 IS NOT NULL) OR
(d.ID = 76 AND c.VALUE76 IS NOT NULL) OR
(d.ID = 77 AND c.VALUE77 IS NOT NULL) OR
(d.ID = 78 AND c.VALUE78 IS NOT NULL) OR
(d.ID = 79 AND c.VALUE79 IS NOT NULL) OR
(d.ID = 80 AND c.VALUE80 IS NOT NULL) OR
(d.ID = 81 AND c.VALUE81 IS NOT NULL) OR
(d.ID = 82 AND c.VALUE82 IS NOT NULL) OR
(d.ID = 83 AND c.VALUE83 IS NOT NULL) OR
(d.ID = 84 AND c.VALUE84 IS NOT NULL) OR
(d.ID = 85 AND c.VALUE85 IS NOT NULL) OR
(d.ID = 86 AND c.VALUE86 IS NOT NULL) OR
(d.ID = 87 AND c.VALUE87 IS NOT NULL) OR
(d.ID = 88 AND c.VALUE88 IS NOT NULL) OR
(d.ID = 89 AND c.VALUE89 IS NOT NULL) OR
(d.ID = 90 AND c.VALUE90 IS NOT NULL) OR
(d.ID = 91 AND c.VALUE91 IS NOT NULL) OR
(d.ID = 92 AND c.VALUE92 IS NOT NULL) OR
(d.ID = 93 AND c.VALUE93 IS NOT NULL) OR
(d.ID = 94 AND c.VALUE94 IS NOT NULL) OR
(d.ID = 95 AND c.VALUE95 IS NOT NULL) OR
(d.ID = 96 AND c.VALUE96 IS NOT NULL) OR
(d.ID = 97 AND c.VALUE97 IS NOT NULL) OR
(d.ID = 98 AND c.VALUE98 IS NOT NULL) OR
(d.ID = 99 AND c.VALUE99 IS NOT NULL)
)
-- 关联history表逻辑同current表
LEFT JOIN klptcm1_pro_plant_state_history h
ON d.MODELTYPE = h.TYPE
AND (
(d.ID = 1 AND h.VALUE1 IS NOT NULL) OR
(d.ID = 2 AND h.VALUE2 IS NOT NULL) OR
(d.ID = 3 AND h.VALUE3 IS NOT NULL) OR
(d.ID = 4 AND h.VALUE4 IS NOT NULL) OR
(d.ID = 5 AND h.VALUE5 IS NOT NULL) OR
(d.ID = 6 AND h.VALUE6 IS NOT NULL) OR
(d.ID = 7 AND h.VALUE7 IS NOT NULL) OR
(d.ID = 8 AND h.VALUE8 IS NOT NULL) OR
(d.ID = 9 AND h.VALUE9 IS NOT NULL) OR
(d.ID = 10 AND h.VALUE10 IS NOT NULL) OR
(d.ID = 11 AND h.VALUE11 IS NOT NULL) OR
(d.ID = 12 AND h.VALUE12 IS NOT NULL) OR
(d.ID = 13 AND h.VALUE13 IS NOT NULL) OR
(d.ID = 14 AND h.VALUE14 IS NOT NULL) OR
(d.ID = 15 AND h.VALUE15 IS NOT NULL) OR
(d.ID = 16 AND h.VALUE16 IS NOT NULL) OR
(d.ID = 17 AND h.VALUE17 IS NOT NULL) OR
(d.ID = 18 AND h.VALUE18 IS NOT NULL) OR
(d.ID = 19 AND h.VALUE19 IS NOT NULL) OR
(d.ID = 20 AND h.VALUE20 IS NOT NULL) OR
(d.ID = 21 AND h.VALUE21 IS NOT NULL) OR
(d.ID = 22 AND h.VALUE22 IS NOT NULL) OR
(d.ID = 23 AND h.VALUE23 IS NOT NULL) OR
(d.ID = 24 AND h.VALUE24 IS NOT NULL) OR
(d.ID = 25 AND h.VALUE25 IS NOT NULL) OR
(d.ID = 26 AND h.VALUE26 IS NOT NULL) OR
(d.ID = 27 AND h.VALUE27 IS NOT NULL) OR
(d.ID = 28 AND h.VALUE28 IS NOT NULL) OR
(d.ID = 29 AND h.VALUE29 IS NOT NULL) OR
(d.ID = 30 AND h.VALUE30 IS NOT NULL) OR
(d.ID = 31 AND h.VALUE31 IS NOT NULL) OR
(d.ID = 32 AND h.VALUE32 IS NOT NULL) OR
(d.ID = 33 AND h.VALUE33 IS NOT NULL) OR
(d.ID = 34 AND h.VALUE34 IS NOT NULL) OR
(d.ID = 35 AND h.VALUE35 IS NOT NULL) OR
(d.ID = 36 AND h.VALUE36 IS NOT NULL) OR
(d.ID = 37 AND h.VALUE37 IS NOT NULL) OR
(d.ID = 38 AND h.VALUE38 IS NOT NULL) OR
(d.ID = 39 AND h.VALUE39 IS NOT NULL) OR
(d.ID = 40 AND h.VALUE40 IS NOT NULL) OR
(d.ID = 41 AND h.VALUE41 IS NOT NULL) OR
(d.ID = 42 AND h.VALUE42 IS NOT NULL) OR
(d.ID = 43 AND h.VALUE43 IS NOT NULL) OR
(d.ID = 44 AND h.VALUE44 IS NOT NULL) OR
(d.ID = 45 AND h.VALUE45 IS NOT NULL) OR
(d.ID = 46 AND h.VALUE46 IS NOT NULL) OR
(d.ID = 47 AND h.VALUE47 IS NOT NULL) OR
(d.ID = 48 AND h.VALUE48 IS NOT NULL) OR
(d.ID = 49 AND h.VALUE49 IS NOT NULL) OR
(d.ID = 50 AND h.VALUE50 IS NOT NULL) OR
(d.ID = 51 AND h.VALUE51 IS NOT NULL) OR
(d.ID = 52 AND h.VALUE52 IS NOT NULL) OR
(d.ID = 53 AND h.VALUE53 IS NOT NULL) OR
(d.ID = 54 AND h.VALUE54 IS NOT NULL) OR
(d.ID = 55 AND h.VALUE55 IS NOT NULL) OR
(d.ID = 56 AND h.VALUE56 IS NOT NULL) OR
(d.ID = 57 AND h.VALUE57 IS NOT NULL) OR
(d.ID = 58 AND h.VALUE58 IS NOT NULL) OR
(d.ID = 59 AND h.VALUE59 IS NOT NULL) OR
(d.ID = 60 AND h.VALUE60 IS NOT NULL) OR
(d.ID = 61 AND h.VALUE61 IS NOT NULL) OR
(d.ID = 62 AND h.VALUE62 IS NOT NULL) OR
(d.ID = 63 AND h.VALUE63 IS NOT NULL) OR
(d.ID = 64 AND h.VALUE64 IS NOT NULL) OR
(d.ID = 65 AND h.VALUE65 IS NOT NULL) OR
(d.ID = 66 AND h.VALUE66 IS NOT NULL) OR
(d.ID = 67 AND h.VALUE67 IS NOT NULL) OR
(d.ID = 68 AND h.VALUE68 IS NOT NULL) OR
(d.ID = 69 AND h.VALUE69 IS NOT NULL) OR
(d.ID = 70 AND h.VALUE70 IS NOT NULL) OR
(d.ID = 71 AND h.VALUE71 IS NOT NULL) OR
(d.ID = 72 AND h.VALUE72 IS NOT NULL) OR
(d.ID = 73 AND h.VALUE73 IS NOT NULL) OR
(d.ID = 74 AND h.VALUE74 IS NOT NULL) OR
(d.ID = 75 AND h.VALUE75 IS NOT NULL) OR
(d.ID = 76 AND h.VALUE76 IS NOT NULL) OR
(d.ID = 77 AND h.VALUE77 IS NOT NULL) OR
(d.ID = 78 AND h.VALUE78 IS NOT NULL) OR
(d.ID = 79 AND h.VALUE79 IS NOT NULL) OR
(d.ID = 80 AND h.VALUE80 IS NOT NULL) OR
(d.ID = 81 AND h.VALUE81 IS NOT NULL) OR
(d.ID = 82 AND h.VALUE82 IS NOT NULL) OR
(d.ID = 83 AND h.VALUE83 IS NOT NULL) OR
(d.ID = 84 AND h.VALUE84 IS NOT NULL) OR
(d.ID = 85 AND h.VALUE85 IS NOT NULL) OR
(d.ID = 86 AND h.VALUE86 IS NOT NULL) OR
(d.ID = 87 AND h.VALUE87 IS NOT NULL) OR
(d.ID = 88 AND h.VALUE88 IS NOT NULL) OR
(d.ID = 89 AND h.VALUE89 IS NOT NULL) OR
(d.ID = 90 AND h.VALUE90 IS NOT NULL) OR
(d.ID = 91 AND h.VALUE91 IS NOT NULL) OR
(d.ID = 92 AND h.VALUE92 IS NOT NULL) OR
(d.ID = 93 AND h.VALUE93 IS NOT NULL) OR
(d.ID = 94 AND h.VALUE94 IS NOT NULL) OR
(d.ID = 95 AND h.VALUE95 IS NOT NULL) OR
(d.ID = 96 AND h.VALUE96 IS NOT NULL) OR
(d.ID = 97 AND h.VALUE97 IS NOT NULL) OR
(d.ID = 98 AND h.VALUE98 IS NOT NULL) OR
(d.ID = 99 AND h.VALUE99 IS NOT NULL)
)
CROSS JOIN (
SELECT * FROM klptcm1_pro_plant_state_current
ORDER BY INSDATE DESC
LIMIT 1
) c
CROSS JOIN (
SELECT * FROM klptcm1_pro_plant_state_history
ORDER BY INSDATE DESC
LIMIT 200
) h
WHERE d.NAME = #{name}
-- 按插入时间倒叙取最新200条
ORDER BY COALESCE(c.INSDATE, h.INSDATE) DESC LIMIT 200
ORDER BY h.INSDATE DESC
LIMIT 200
</select>