2015-05-04 35 views
1

如何使用mySql返回Result列如下所示?相同的日期將返回相同的結果。mySql,同一日期同組

輸入:

date col | Desc 
02 - Apr | abcd 
02 - Apr | qwer 
02 - Apr | fsdfx 
06 - Apr | vsdc 
07 - Apr | vsdv 
07 - Apr | fpow 

所需的輸出:

date col | Desc | Result 
02 - Apr | abcd | 1 
02 - Apr | qwer | 1 
02 - Apr | fsdfx | 1 
06 - Apr | vsdc | 2 
07 - Apr | vsdv | 3 
07 - Apr | fpow | 3 
+0

提供有關您的數據和表架構的更多詳細信息 –

+0

發佈期望的輸出。 – potashin

+0

您的意思是每個日期的遞增數字? – fancyPants

回答

0

你需要group by一起聚集取決於 「結果」 的語義:最小值,最大值,平均值,總和 - 這樣的:

SELECT sum(Result) from tab1 group by date_col 
1
select 
t.* 
, @n := if(@prev != `date col`, @n + 1, @n) as result 
, @prev := `date col` 
from 
t 
, (select @prev := null, @n := 1) v 
order by `date col` 

邏輯帶電作業是這樣的:

這種交叉連接查詢

, (select @prev := null, @n := 1) v 

初始化的變量。

然後在select子句中,我們首先檢查一下,如果日期不同於前一行。如果是,則增加變量。
在下一行中,我們將當前行的值賦給變量。因此,當再次處理select子句時,在第一行中它具有「前一個」值,在下一行中分配當前值。

order by子句存在,因爲除非您指定它,否則關係數據庫中沒有順序。忽略它,你會得到錯誤的結果。