我发现了很多类似的案例,但没有,让我解释一下,
我有一个看起来像这样的表:
D列的值是目标ID,其他GRC列都是其值的目标(我只是放置了虚拟值)
该表有点棘手,因为它看起来像一个数据透视表,我尝试取消对其进行透视但没有成功。有超过200个目标列,因此该想法是仅选择列D中的目标列。我通过IN BUT实现了新目标的使用,然后必须更改它,使其完全不动态。
我的问题是,有可能从col是D中的col那里选择“ col”,就像从col D en中选择一个不同的值,然后选择D的位置]
+-----+-----+-----+-------+------------+---------+----------+--------+-------+-------+-------------+ | A | B | C | D | Date | GRC03 | GRC06 | GRC08 | GRC21 | GRC25 | GRC29 | +-----+-----+-----+-------+------------+---------+----------+--------+-------+-------+-------------+ | XXX | yyy | zzz | GRC03 | 01/01/2020 | 567 | 89 | 65 | 1 | 87 | 23 | | Xxx | yyy | zzz | GRC06 | 01/01/2020 | 989 | 76 | 43 | 2 | 56 | 24 | | XXX | yyy | zzz | GRC08 | 02/01/2020 | 67 | 54 | 21 | 3 | 67 | 89 | | XXX | yyy | zzz | GRC03 | 02/01/2020 | 41 | 38 | -1 | 4 | 50 | 111,3333333 | | Xxx | yyy | zzz | GRC06 | 02/01/2020 | -209 | 20,5 | -23 | 5 | 40 | 144,3333333 | | XXX | yyy | zzz | GRC08 | 03/01/2020 | -459 | 3 | -45 | 6 | 30 | 177,3333333 | +-----+-----+-----+-------+------------+---------+----------+--------+-------+-------+-------------+
我想要的结果
+------------+-------+-------------+
| DATE | D | RESULTS |
+------------+-------+-------------+
| 01/01/2020 | GRC03 | 567 |
| 01/01/2020 | GRC06 | 89 |
| 02/01/2020 | GRC08 | 21 |
| 02/01/2020 | GRC21 | 4 |
| 02/01/2020 | GRC25 | 67 |
| 03/01/2020 | GRC29 | 177,3333333 |
+------------+-------+-------------+
我发现了很多类似的情况,但没有,让我解释一下,我有一个看起来像这样的表:D列值是目标ID,其他GRC列都是它们的值的目标(I ...] >
我认为您想要case
表达式:
select d, date,
(case when d = 'GRC03' then GRC03
when d = 'GRC06' then GRC06
when d = 'GRC08' then GRC08
when d = 'GRC21' then GRC21
when d = 'GRC25' then GRC25
when d = 'GRC29' then GRC29
end) as results
from t;