2016-10-10 273 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 v1.value, v2.value from value v1, value v2 

回答

0

我相信使用條件匯聚應該讓你的轉動結果:

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的過程中建立動態聲明的方式然後使用EXECUTE執行它。

+0

所以你的意思是我應該在java中準備字符串「動態」,我明白了。但這意味着我必須先從表格中獲取所有cid,然後動態插入它們。 –

+0

我的意思是一切都可以在MySQL程序中完成。這裏不需要Java。去谷歌上查詢。動態MySQL查詢。關於這個問題,在這個問題上也有很多答案。 –