我有一个用户数据点表,并尝试使用 group by、a min 和 case 对其进行透视。
所以..
用户数据:
user_id | data_type_id | value
1 | 1 | 'Joe'
1 | 2 | 'Blow'
2 | 1 | 'Mary'
2 | 2 | 'Jones'
select
max( case when data_type_id = 1 then value end) as 'firstName',
max( case when data_type_id = 2 then value end) as 'lastName'
from user_data group by user_id
这种'a sort'a有效,除了通常值是NULL,即使如果我删除group by和max,数据集中这些数据类型的值也是如此。
我试图了解这里幕后发生的事情,因为它非常令人困惑。group by
使它看起来每个用户只有一行(我不确定它如何决定哪一行......可能是第一行?)但随后 case 语句设法找到未显示的行的信息。
在理解这里发生的事情时,我真的很感激一些帮助,以便我可以获得我实际正在寻找的数据。