執行select查詢我有一個表名test
使用一個表作爲一項規則,而在其他表
first last
raj kumar
raj patel
有數百行的這個表。
我有另一個表class
所有的名字都出現在test
表和它的標記爲每個主題。
class_id first_name last_name subject marks
1 raj kumar physics 70
1 raj kumar chemistry 70
1 raj patel physics 80
1 raj kumar math 90
1 raj kumar computer 80
1 raj patel chemistry 90
1 raj patel math 100
2 raj kumar physics 70
2 raj kumar chemistry 70
2 raj patel physics 80
2 raj kumar math 90
2 raj kumar computer 80
2 raj patel chemistry 90
2 raj patel math 100
現在我想知道每個學生存在於以下格式test
表的總標記。
class_id raj.kumar raj.patel
1 310 270
2 n m
所以會有n
數列中所產生的tbale
對於這種特殊情況下,我們可以寫
select class_id
sum(case when first_name = 'raj' and last_name = 'Kumar' then marks else 0) as "raj.kumar",
sum(case when first_name = 'raj' and last_name = 'patel' then marks else 0)as "raj.patel"
from class
group by class_id
由於學生人數是不固定的,其存在於test
表。所以我不想在我的查詢中硬編碼姓和名。 我想要這樣的東西,可以計算所有在test
桌上的學生的分數。
select class_id,
for(i = 0; i < test.size; i++)
sum(case when first_name = i.first and last_name = i.last then marks else 0) as i.first|| '.' ||i.last,
from class
group class_id
如何編寫查詢或存儲過程爲此 在此先感謝。
我正在使用postgresql。
檢查[此答案](http://stackoverflow.com/a/35447184/593144)。你的情況可能是'select ct('select * from test','class_id','first_name || last_name','marks','ct_cur');在ct_cur中獲取所有內容;' – Abelisto