2017-02-14 80 views
-1

嗨,大家好我是新來學習的MySQL,我有這個表如何在一排的MySQL顯示多行數據到

f_id|c_file|e.name|operation|rate|c_no | qty| 
1 015 A  coping 0.30 1 1300 
2 015 A  coping 0.30 2 4567 
3 015 A  coping 0.30 3 1300 
4 015 A  coping 0.30 4 789 
5 015 A  coping 0.30 5 47 
6 015 B  cutting 0.30 1 568 
7 015 B  cutting 0.30 2 123 
8 015 B  cutting 0.30 3 8952 
9 015 B  cutting 0.30 1 456 
10 015 B  cutting 0.30 2 89 
11 015 B  cutting 0.30 3 78 

現在我要像這種形式的表 表2

f_id|c_file|e.name|operation|c_no1|c_no2 |c_no3|c_no4|c_no5|total|rate|total*rate 
2  015 B  cutting 568  123 8952    9643 0.30 2892.9 
2  015 B  cutting 456  89 78    9643 0.30 2892.9 
total      1024 212 9030 
+3

請放在這裏你試過的什麼 – Mojtaba

+1

你可以簡單地選擇多個表格。 'SELECT table1。*,table2。* FROM table1,table2' – Nicolas

+1

這被稱爲數據透視表,並且已經在SO上被許多次詢問和回答。 – Shadow

回答

0

您可以使用聚合來執行旋轉操作和用戶變量以生成序列號。

set @fid := 0; 

select @fid := @fid + 1 fid, 
    c_file, 
    e.name, 
    operation, 
    sum(case when c_no = 1 then qty end) c_no1, 
    sum(case when c_no = 2 then qty end) c_no2, 
    sum(case when c_no = 3 then qty end) c_no3, 
    sum(case when c_no = 4 then qty end) c_no4, 
    sum(case when c_no = 5 then qty end) c_no5, 
    sum(qty) total, 
    rate, 
    sum(qty) * rate total_times_rate 
from t 
group by c_file, 
    e.name, 
    operation, 
    rate 
order by min(f_id); 
+0

謝謝很多先生,你能告訴我更多的一點,如何總結所有的列像(c_no1 + c_no2 + c_no3 + c_no4 + c_no5)請... – user3602024

+0

@ user3602024 - 請參閱編輯 – GurV

+0

再次感謝gurv先生.... – user3602024