2013-10-28 32 views
0

基本的SQL查詢有麻煩,我需要總結了大量的信息和我使用的查詢是:SQL查詢基礎知識 - 返回多個數據在不同的日期

SELECT date, id, actions 
FROM accounts 
WHERE (date between '2013-07-01' and '2013-9-30') AND (id in (---ids---)); 

現在我越來越

date 1 id1 actions 
date 2 id1 actions 
date 3 id1 actions 
date 4 id1 actions 
date 5 id1 actions 
date 6 id1 actions 

date 1 id2 actions 
date 2 id2 actions 
date 3 id2 actions 
date 4 id2 actions 
date 5 id2 actions 
date 6 id2 actions 

我要的是

date 1 id1 actions id2 actions 
date 2 id1 actions id2 actions 
date 3 id1 actions id2 actions 
date 4 id1 actions id2 actions 
date 5 id1 actions id2 actions 
date 6 id1 actions id2 actions 

什麼是這樣做的最簡單的方法?

+1

您是使用特定的SQL服務器還是一般詢問SQL? – Rogue

+0

你如何將'id1'與'id2'聯繫起來?或者,'id1'和'id2'與日期有什麼關係? – Linger

+0

你可以使用'PIVOT'將它們放到類似的東西里,但是用'id1'和'id2'作爲列名。 – zimdanen

回答

2

假設給定日期只有一個id1id2,那麼這是一個數據透視查詢。有一些數據庫的樞軸特殊的語法,但在一般以下工作:

SELECT date, 
     max(case when id = 'id1' then id end) as id1, 
     max(case when id = 'id1' then actions end) as id1_actions, 
     max(case when id = 'id2' then id end) as id2, 
     max(case when id = 'id2' then actions end) as id2_actions 
FROM accounts 
WHERE (date between '2013-07-01' and '2013-9-30') AND (id in (---ids---)) 
group by date 
order by date; 

注意date是在一些數據庫關鍵字,所以你需要引用以某種方式(如採用雙引號,後引號或方括號)。