17,140
社区成员




SELECT t.Get_Time,
(MAX(DECODE(t.Tag_Id, 'XXXX_001', Reading)) +
MAX(DECODE(t.Tag_Id, 'YYYY_001', Reading))) *
MAX(DECODE(t.Tag_Id, 'ZZZZ_001', Reading)) val
FROM Dat_Tag t
GROUP BY t.Get_Time
这种写法有何错误?
SQL> WITH t AS (
2 SELECT 'XXXX_001' Tag_Id,10.00 Reading,'2011-07-05 12:00' Get_Time FROM DUAL UNION ALL
3 SELECT 'YYYY_001' Tag_Id,20.00 Reading,'2011-07-05 12:00' Get_Time FROM DUAL UNION ALL
4 SELECT 'ZZZZ_001' Tag_Id,30.00 Reading,'2011-07-05 12:00' Get_Time FROM DUAL UNION ALL
5 SELECT 'XXXX_001' Tag_Id,10.00 Reading,'2011-07-05 12:05' Get_Time FROM DUAL UNION ALL
6 SELECT 'YYYY_001' Tag_Id,10.00 Reading,'2011-07-05 12:05' Get_Time FROM DUAL UNION ALL
7 SELECT 'ZZZZ_001' Tag_Id,10.00 Reading,'2011-07-05 12:05' Get_Time FROM DUAL
8 )
9 SELECT t.Get_Time,
10 (MAX(DECODE(t.Tag_Id, 'XXXX_001', Reading)) +
11 MAX(DECODE(t.Tag_Id, 'YYYY_001', Reading))) *
12 MAX(DECODE(t.Tag_Id, 'ZZZZ_001', Reading)) val
13 FROM t
14 GROUP BY t.Get_Time
15 ;
GET_TIME VAL
---------------- ----------
2011-07-05 12:00 900
2011-07-05 12:05 200
select (reading + reading) * reading hj
from Dat_Tag
where Tag_Id = 'YYYY_001'
and Get_Time = '2011-07-05 12:00');
select (decode(Tag_Id,'XXXX_001',reading) + decode(Tag_Id,'YYYY_001',reading)) * decode(Tag_Id,'YYYY_001',reading)
from Dat_Tag
where Get_Time = '2011-07-05 12:00'