myview
次の方法で情報を取得するビューがあります。
ID | ATTRNAME | ATTRVAL
1 | attr1 | a
2 | attr2 | b
3 | attr3 | c
4 | attr3 | d
.. | .. | ..
.. | .. | ..
次のような出力が必要です。
ATTRNAME | ATTRVAL
attr1 | a
attr2 | b
attr3 | Multiple Values
ここで、属性 (ATTRNAME) に単一の値がある場合はそれが表示され、属性 (attr3 など) に複数の値がある場合は、「複数の値」というテキストが表示されます。
私が試してみました:
SELECT DISTINCT attrname
, CASE cnt
WHEN 1 THEN TO_CHAR(attrval)
ELSE 'Multiple Values'
END AS attrval_rev
FROM myview
JOIN (SELECT attrname, COUNT(attrval) AS cnt
FROM myview
GROUP BY attrname) USING (attrname)
これは機能しますが、約 11,000 行の実行に 8 分以上かかるため、これは適切な種類のソリューションではありません。助けてください!