I have this current query (more info than really needed to show):
x
SELECT DISTINCT
IBX_Name AS "IBX",
Tank_ID AS "Main Tank ID",
Main_Tank_Index AS "Tank Index",
AST_UST_Level1 AS "Latest Main Tank 1 Level",
AST_UST_Level2 AS "Latest Main Tank 2 Level",
AST_UST_Level3 AS "Latest Main Tank 3 Level",
RunData_Date AS "Last Date"
FROM
RunData
INNER JOIN
IBXs ON IBXs.IBX_ID = RunData.fk_IBX_ID
INNER JOIN
Tanks ON Tanks.fk_IBX_ID = IBX_ID
WHERE
([RunData_Date] = (SELECT MAX([RunData_Date])
FROM RunData AS T1
WHERE T1.fk_IBX_ID = IBX_ID
AND (T1.AST_UST_Level1 > 0 OR T1.AST_UST_Level2 > 0 OR T1.AST_UST_Level3 > 0)))
The query returns this output:
IBX Main Tank ID Tank Index Latest Main Tank 1 Level Latest Main Tank 2 Level Latest Main Tank 3 Level Last Date
---------- ------------ ----------- ------------------------ ------------------------ ------------------------ ----------
DC2 1 1 16128 16192 NULL 2018-11-08
DC2 2 2 16128 16192 NULL 2018-11-08
DC2 38 NULL 16128 16192 NULL 2018-11-08
DC2 39 NULL 16128 16192 NULL 2018-11-08
DC2 40 NULL 16128 16192 NULL 2018-11-08
DC2 41 NULL 16128 16192 NULL 2018-11-08
DC2 42 NULL 16128 16192 NULL 2018-11-08
DC2 43 NULL 16128 16192 NULL 2018-11-08
DC4 3 1 25881 26007 NULL 2020-03-18
DC4 4 2 25881 26007 NULL 2020-03-18
DC4 5 NULL 25881 26007 NULL 2020-03-18
DC4 6 NULL 25881 26007 NULL 2020-03-18
DC4 7 NULL 25881 26007 NULL 2020-03-18
DC4 8 NULL 25881 26007 NULL 2020-03-18
DC4 9 NULL 25881 26007 NULL 2020-03-18
DC4 10 NULL 25881 26007 NULL 2020-03-18
DC4 11 NULL 25881 26007 NULL 2020-03-18
DC5 12 1 24079 23774 NULL 2020-03-13
DC5 13 2 24079 23774 NULL 2020-03-13
DC5 14 NULL 24079 23774 NULL 2020-03-13
DC5 15 NULL 24079 23774 NULL 2020-03-13
DC5 17 NULL 24079 23774 NULL 2020-03-13
DC5 18 NULL 24079 23774 NULL 2020-03-13
DC5 19 NULL 24079 23774 NULL 2020-03-13
DC5 20 NULL 24079 23774 NULL 2020-03-13
DC5 21 NULL 24079 23774 NULL 2020-03-13
I need to modify this query so that it only shows IBX, Tanks ID (Where Index != 0) and its associated Level.
Level 1 goes to Index 1, Level 2 goes to Index 2, and Level 3 goes to Index 3
I’ve tried all sorts of variations, but I cannot get it to work.
Desired output:
IBX Main Tank ID Tank Index Latest Main Tank Level Last Date
---------- ------------ ----------- ---------------------- ----------
DC2 1 1 16128 2018-11-08
DC2 2 2 16192 2018-11-08
DC4 3 1 25881 2020-03-18
DC4 4 2 26007 2020-03-18
DC5 12 1 24079 2020-03-13
DC5 13 2 23774 2020-03-13
Advertisement
Answer
SELECT IBX_Name, Tank_ID, Main_Tank_Index, CASE Main_Tank_Index
WHEN 1 THEN AST_UST_Level1
WHEN 2 THEN AST_UST_Level2
WHEN 3 THEN AST_UST_Level3 END AS LatestMainTankLevel, RunData_Date
FROM