0
是否可以構建查詢以基於多個條件創建多個列並按時間聚合。例如一個簡單的表像這樣:根據where子句創建列
id value created
1 45 datetime
2 52 datetime
3 24 datetime
4 33 datetime
5 20 datetime
我可以得到10和20之間的所有值每一年的一週,像這樣:
SELECT count(*) as '10-20', week(created) as 'week', year(created) as 'year'
FROM table
WHERE value > 10 AND value < 20
GROUP BY year(created), week(created)
這會給我例如:
10-20 week year
40 1 2014
21 2 2014
3 33 2014
我可以重複查詢範圍20-30
,30-40
,40-50
和手動加入輸出,但我想單個查詢將它們組合成一個表,所以th Ë輸出將是:
10-20 20-30 30-40 40-50 week year
40 0 33 42 1 2014
21 1 0 2 1 2014
0 0 32 0 12 2014
3 42 34 32 33 2014
這是一個「數據透視」,並且有很多例子。然而,一個更好的主意是隻需要像你一樣獲取結果集並在應用程序級別處理顯示邏輯(例如,使用簡單的PHP循環) – Strawberry
如果你正在獲得,比如說只有3個選項(10,20 ,30周的範圍),你可以處理每個3個不同的查詢。 – jean
我同意@Strawberry,這是PIVOT的理想情況,但它可以在DB中實現,那麼爲什麼還要打擾客戶端呢? – Ziouas