2016-07-16 63 views
0

我有一個表,它有很多相同的值。 在我的表中,我想根據列來選擇不同的值。我的問題是,包括mysql:我想在我的行中包含一個值

這是我的表

column column.a column.b 
1  tax1  100 
1  tax2  200 
1  tax3  300 
2  tax1  100 
2  tax2  200 

這是我的選擇語句

 select distinct column, sum(column.b) - column.b as amount, 
     (select column.b where column.a = tax2)as column.c 
     from table order by column 

我想在我的select語句column.b包括其中column.a = TAX2

這是我期望的輸出。

column amount column.c 
1  500 200 
2  200 200 

我只是不知道我可以將它包含在我的select語句中。謝謝。

+1

鑑於樣本數據,您的結果對我來說沒有意義(對我而言)。什麼是c列?金額如何計算? –

+0

我想我明白了。通過在相同的'select'中混合聚合值和非聚合值,您正在濫用SQL。你的問題沒有意義。 –

+0

什麼是'sum(column.b) - column.b'應該是什麼意思?第1列有3個不同的'column.b'值,哪一個值應該被減去? – Barmar

回答

0

您的問題的答案是使用條件聚合和顯式group by。例如,一個合理的查詢將是:

select column, 
     sum(case when a <> 'tax2' then b else 0 end) as amount, 
     sum(case when a = 'tax2' then b else 0 end) as c 
from t 
group by column; 

這並不完全給出您的問題的結果。但是,你的問題的結果是不穩定的,因爲你正在混合sum(column.b)column.b - 未集合的值取自一個不確定的行。

+0

我想你會得到他的結果,如果您使用'a <>'tax1'' – Barmar

+0

感謝提示,但列c的值將基於column.b,其中column.b的值爲tax2。那可能嗎? –

+0

@McFeranco這就是第二個'sum()'所做的事情。 – Barmar

相關問題