【发布时间】:2013-03-20 13:45:12
【问题描述】:
我有两张这样的桌子
表 1
profile
--------
id
---
1 | XXX
2 | zzz
表 2
profile_details
-----------------
id | K | V
---------------------------
1 | first_name | XXX
1 | last_name | YYY
1 | gender | female
2 | name | zzzzz
2 | gender | male
2 | phone | 8999xxxx
2 | location | india
2 | spoken_language | hindi
我使用这个查询来获取作为列的行
select profiles.id,
max( decode( k, 'first_name', v, NULL )) first_name,
max(decode(k, 'last_name', v, null))as last_name ,
max( decode( k, 'gender', v, NULL)) gender
from profile_details , profiles
where
profile_details.id = profiles.id
and
profile_details.id=1
group by profiles.id
找我
id | first_name| last_name | gender
--------------------------------------------
1 | XXX | YYY | female
这可以将行作为列获取。但是如何更改此查询以动态包含列,因为 K 值可以是任何可能的值。
例如,对于 id 2,它应该是
id | name | gender | mobile | location | spoken_language
------------------------------------------------------------------
2 | zzz | male | 8999xxxx | india | hindi
谢谢 V
【问题讨论】:
-
您的问题的简单答案是“否”。 SQL 语句必须显式列出要返回的列。扩展的答案是:你了解动态 SQL 吗?