基于数据列的条件

时间:2011-07-19 07:19:00

标签: sql oracle

有两个表,第一个包含数据,第一个基于类别的第二个元数据。

table1 
id, category1, category2, custom1, custom2, custom3...

table2 
category1, category2, denom, field

示例:

table1
AAAAA, Car, Compact, Red, Automatic, 150bhp

table2
Car, Compact, Color, custom1

table2中的“field”列指向table1中哪个字段包含元数据。

现在我要做的是以某种方式使用sql中'field'列的值作为列。

select * from table1
where table1.category1 = 'Car'
  and table1.category2 = 'Compact'
  and table1.category1 = table2.category1
  and table1.category2 = table2.category2
  and table2.denom = 'Color'
  and table1.(value of table2.field) = 'Red'

这可以在单个sql语句中执行吗?

1 个答案:

答案 0 :(得分:2)

如果您事先知道“自定义”列的数量,则可以。

你可以替换

and table1.(value of table2.field) = 'Red'

and    case table2.field
         when 'custom1' then table1.custom1
         when 'custom2' then table1.custom2
         when 'custom3' then table1.custom2
         ...
         else NULL
       end
       = 'Red'