条件SELECT取决于一组规则

时间:2015-03-25 14:16:36

标签: sql

我需要根据一组规则从不同的列中获取数据,但我不知道如何操作。让我用一个例子来说明这一点。我有一张桌子:

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 _ **的每个组合代表该设备的一个方面的值。该表包含所有方面的所有值,但我们想要一个仅包含方面特定子集的数据的行,以便我们可以在单个表中输出所有设备的特定方面子集的值。

1 个答案:

答案 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
...