1

そのように構造化されたテーブルの場合:

"Object Attribute" Table - Links objects with all of their attributes and values;
Object ID       Attribute ID    Attribute String Value  ...
1337            123             Example Object Title
1337            124             Example Object Type
1337            125             Example Object Description
1337            126             Example Object Author
0001            123             (null)
0001            124             SomeType
0001            125             This is an example record
0001            126             Jiman
0002            123             Bar
0002            124             BarType
0002            125             This is another
0002            126             Jiman

編集: 属性 ID には次のマッピングがあります。

Attribute ID    Attribute Name
123             Title
124             Type
125             Description
126             Author

Title フィールドが NULL の転置されたデータ セットを返す Oracle クエリを作成するにはどうすればよいですか?

出力例:

ID      Title       Type        Description             Author
0001    (null)      FooType     This is an example...   Jiman

PIVOT を使用して非集計値 (つまり、これらの文字列属性) を転置できますか?

4

1 に答える 1

2

属性 ID から属性名へのマッピングをクエリでハードコーディングし、コンパイル時に結果に必要な要素の数を知っていると仮定すると、最も簡単な方法は次のようになります。

SELECT *
  FROM (
    SELECT object_id,
           MAX( CASE WHEN attribute_id = 123 THEN attribute_string_value ELSE NULL END) title,
           MAX( CASE WHEN attribute_id = 124 THEN attribute_string_value ELSE NULL END) type,
           MAX( CASE WHEN attribute_id = 125 THEN attribute_string_value ELSE NULL END) description,
           MAX( CASE WHEN attribute_id = 126 THEN attribute_string_value ELSE NULL END) author
      FROM your_table_name
     GROUP BY object_id )
  WHERE title IS NULL

11g のみをサポートする必要がある場合は、PIVOT演算子も使用できます。

于 2012-10-19T17:56:09.337 に答える