Witam.
Mam mam pojedynczą tabelkę do której zapisuje odebrane dane z poboru energii na malarni, kompresory itp odebrane z kilku lumeli.
czas, urządzenie, rejestr, wartość
2019-03-12 12:00, 1032, 7066, 425
2019-03-12 12:00, 1040, 7066, 800
gdzie urządzanie 1032 to np malarnia a 1040 trafo, rejestr 7066 to jest zawsze moc15 minut
poniżej kod zapytania - ale zwraca mi cos takiego
2019-03-18 01:00 :00 NULL NULL NULL
2019-03-18 01:00 :00 NULL NULL 15420
2019-03-18 01:00 :01 15054.2 11961.7 NULL
2019-03-18 01:00 :01 NULL NULL 18420
dla tego samego czasu daje dwie odpowiedzi
SELECT
FORMAT(czas, 'yyyy-MM-dd hh:mm :ss') AS czas,
sum(CASE WHEN rejestr = 7066 and id_zap= '1032' THEN wartosc ELSE NULL END) as RS1moc,
sum(CASE WHEN rejestr = 7066 and id_zap= '1035' THEN wartosc ELSE NULL END) as RS2moc ,
sum(CASE WHEN rejestr = 7066 and id_zap= '1040' THEN wartosc ELSE NULL END) as RS11_moc
FROM dane_akt
where czas BETWEEN '2019-03-18 00:00:00' and '2019-03-20 23:59:00'
GROUP BY czas
order by czas
dla zapytania poniżej daje tysiące danych a może ich być max 2000
with
temp0 as (select DISTINCT czas, wartosc , id_zap from dane_akt
where rejestr='7066'and czas BETWEEN '2019-03-18 00:00' and '2019-03-20 10:00'),
temp1 as (select wartosc as rs1 from temp0
where id_zap= '1032'),
temp2 as (select wartosc as rs2 from temp0
where id_zap= '1040')
select czas, temp1.rs1,temp2.rs2
from temp0, temp1 , temp2
Jestem kiepski w SQL i pewno coś przeoczyłem.
Na koniec okazało sie ze to już jest niepotrzebne ale nie daje mi to spokoju.
Proszę o podpowiedź