2016-10-10 6 views
-2

私は現在、プロジェクト管理ソフトウェア(学校プロジェクト)のクエリに苦労しています。単一の列を複数の列に分割する

は、私は、次の表があります。このようになるはずです

projectID  | cID   | value 
---------------|------------------------- 
1    |  3   |  321 
1    |  4   |  442 
2    |  3   |  999 
2    |  4   |  799 

、最終製品を:

 c1  |  c2 
---------------|----------------- 
     321  |  442 
     999  |  799 

を今、問題は、C1、C2の無限の数があり得ることです無限の数のプロジェクトがあります。テーブルはかなり大きくなります(両方向)。

列に「それ自体」を宣言させる方法はありますか?そうでない場合は、c1、c2、...の数を5に制限します。どうすればいいですか?

select 
    max(case when cid = 3 then value end) as c1, 
    max(case when cid = 4 then value end) as c2, 
    ... 
from yourtable 
group by projectid 

はい、文字列操作と連結とによってMySQLのプロシージャ内で動的ステートメントを構築する方法があります:私はあなたの旋回した結果を取得する必要があり、条件付きの集約を使用して信じて

select v1.value, v2.value from value v1, value v2 

答えて

0

:私のような何かを試してみましたEXECUTEを使用して実行します。

+0

Java内で文字列を「動的に」準備する必要があることを意味します。しかし、それはまずテーブルからすべてのcidを取得してから、それらを動的に挿入する必要があることを意味します。 –

+0

私はすべてがMySQLの手順内で行うことができることを意味します。ここにJavaは必要ありません。それはGoogleです。動的MySQLクエリ。この問題については、SOにも多くの回答があります。 –

関連する問題