我需要根据一组规则从不同的列中获取数据,但我不知道如何操作。让我用一个例子来说明这一点。我有一张桌子:
ID ELEM_01 ELEM_02 ELEM_03
---------------------------------
1 0.12 0 100
2 0.14 5 200
3 0.16 10 300
4 0.18 15 400
5 0.20 20 500
我有一套看起来像这样的规则:
P1Z:ID = 2和ELEM_01
P2Z:ID = 4和ELEM_03
P3Z:ID = 4和ELEM_02
P4Z:ID = 3和ELEM_03
我试图输出以下内容:
P1Z P2Z P3Z P4Z
------------------------
0.14 400 15 300
我习惯了更简单的查询,这有点高于我的水平。我对这个问题感到困惑,我没有看到一个直截了当的解决方案。任何指针都会受到赞赏。
编辑规则背后的逻辑:该表包含有关设备不同方面的数据。 ID / ELEM _ **的每个组合代表该设备的一个方面的值。该表包含所有方面的所有值,但我们想要一个仅包含方面特定子集的数据的行,以便我们可以在单个表中输出所有设备的特定方面子集的值。
答案 0 :(得分:2)
假设每列都是数字且ID是唯一的,您可以这样做:
SELECT
SUM(CASE WHEN ID = 2 THEN ELEM_01 END) AS P1Z,
SUM(CASE WHEN ID = 4 THEN ELEM_03 END) AS P2Z,
SUM(CASE WHEN ID = 4 THEN ELEM_02 END) AS P3Z,
SUM(CASE WHEN ID = 3 THEN ELEM_03 END) AS P4Z
...