1

私は以下のようなテーブルを持っています:

id name role1 role2 role3
-------------------------
1  John   y    n      y
2  Pete   n    y      y
3  Den    n    y      y
4  Mat    y    n      n

を使用してテーブルをフィルター処理した後role1='Y'、Pete と Den を失いました。

分析を使用して、以下のような表を作成するにはどうすればよいですか。

       Count (Y)
Role1    3
Role2    2
Role3    3

私はすべてを試しました。助けてください

ありがとう

4

1 に答える 1

1

データベースが Oracle 11g 以降の場合は、unpivot 句を使用できます

SELECT usr_role,
  COUNT(*) role_count
FROM
  (SELECT  * 
     FROM table_name 
     UNPIVOT (hasRole FOR usr_role IN (role1,role2,role3))
  WHERE hasRole = 'y'
  )
GROUP BY usr_role ;

これは以下を返します:

USR_ROLE  ROLE_COUNT
ROLE3      3
ROLE1      2
ROLE2      2

このクエリをRPDの不透明なビューとして使用できます

于 2013-09-27T16:45:00.783 に答える