动态列

时间:2011-11-02 10:26:12

标签: sql

我的表格包含以下静态列

ID  Sys_Date  Name prop_name1  prop_name2   prop_name3   prop_value1   prop_value2   prop_value3

10   11/2/2011Java class     method       parameter   Imanager         getOrders       orderNumber

我需要编写SQL查询,获取输入属性名称,如“method”,然后检查(prop_name1 prop_name2 prop_name3)并检查哪一列 如果我发现它等于“方法”我需要将3列跳到正确的值“getOrders”并从那里获取值

prop_name1   is mapping to prop_value1   
prop_name2   is mapping to prop_value2
prop_name3   is mapping to prop_value3

我怎么能用sql查询呢?

提前致谢

1 个答案:

答案 0 :(得分:1)

你可以这样做:

select name,value
from 
(
  select id, prop_name name, prop_name value
  from table
  union
  select id, prop_name2 name, prop_name2 value
  from table
  union 
  select id, prop_name3 name, prop_name3 value
  from table
)
where name = 'method'

...这基本上可以将您的数据变成一个更容易查询的结构。不过,你最好改变表结构。