2011-11-08 3 views
0

にカラム名としてSQLの列の値を使用してください:私は、特定の日付の上の2つの通信タイプを表示するためのクエリを書きたいどのように私はテーブルに何か持っているOracleの11

Date  | Communication_Type 
    ---------- -------------------- 
    12/10/2011 EMAIL 
    12/10/2011 WEB 
    12/10/2011 WEB 
    11/10/2011 MAIL 
    11/10/2011 FAX 
    11/10/2011 FAX 
    11/10/2011 EMAIL 

を、しかし、通信タイプは、2011年11月11日

<_top_communication_type_count> | <second_top_communication_type_count> 
-------------------------------- -------------------------------------- 
2        1  

のためにすなわち、私はこのような出力を得ることができる方法はあります彼らは100

のいずれかの可能性があり、ここに示すものに限定されるものではなく、 _top_communicat ion_type_countはこの場合FAX_COUNTになりますが、12/11/2011WEB_COUNT

です。説明するのはちょっと難しいですが、うまくいけばいいと思います。 mySQLのサンプルが見つかりましたが、Oracleのサンプルは見つかりませんでした。

+0

MySQLバージョンを示し、(どのようなエラーを行ってくださいあなたはそれを使うのですか?) –

答えて

0

Oracleの列名として未知の値のリストを使用することはできません(10gにはpivotがありますが、値の既知のリストが必要です)。理論的には、最初に一意の値を照会してから動的な照会を作成することで可能ですが、わずかな有用性の結果は多大な労力を要します。

以下

は(オラクルで動作するように修正@Michaelデュラントの回答をもとに、)通常の行ベースのフォーマットでデータを返すのソリューションです:

select * 
from (
    select communication_type 
    from communications c 
    where date = 'the_date' 
    order by count(c.communication_type) 
    group by c.communication_type) 
where rownum <= 2 
関連する問題