我有一个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),则应该显示文本“Multiple Values”。
我努力了:
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 多分钟。请帮忙!