2016-08-17 59 views
-3

我呼籲user_var需要支點查詢我的表

User_ID  VAR_ID VALUE START_DATE  END_DATE 
1   25  2.0  01-JAN-2009  31-DEC-2011 
1   56  4.56 01-JAN-2009  31-DEC-2011 
1   89  7.8  01-JAN-2009  31-DEC-2011 
2   25  5.64 01-OCT-2009  30-SEPT-2012 
2   56  4.86 01-OCT-2009  30-SEPT-2012 
2   89  9.87 01-OCT-2009  30-SEPT-2012 
1   25  6.33 01-JUL-2009  30-JUN-2012 
1   56  4.78 01-JUL-2009  30-JUN-2012 
1   89  1.2  01-JUL-2009  30-JUN-2012 
2   25  7.21 01-JAN-2009  31-DEC-2011 
2   56  2.33 01-JAN-2009  31-DEC-2011 
2   89  1.65 01-JAN-2009  31-DEC-2011 
1   25  7.89 01-APR-2009  31-MAR-2012 
1   56  0.00 01-APR-2009  31-MAR-2012 
1   89  1.78 01-APR-2009  31-MAR-2012 
2   25  7.6  01-JUL-2009  30-JUN-2012 
2   56  7.15 01-JUL-2009  30-JUN-2012 
2   89  8.54 01-JUL-2009  30-JUN-2012 

我想透視表VAR_ID隨時間間隔的基礎上 假設VAR_ID 25代表信用 VAR_ID 56代表借記一個下表 和VAR_ID 89代表平衡

輸出應該

USER_ID  CREDIT  DEBIT BALANCE  START_DATE  END_DATE 
1   2.0   4.56 7.8   01-JAN-2009  31-DEC-2011 
2   5.64  4.86 9.87  01-OCT-2009  30-SEPT-2012 
1   6.33  4.78 1.2   01-JUL-2009  30-JUN-2012 
2   7.21  2.33 1.65  01-JAN-2009  31-DEC-2011 
1   7.89  0.00 1.78  01-APR-2009  31-MAR-2012 
2   7.6   7.15 8.54  01-JUL-2009  30-JUN-2012 
+1

請向我們顯示您的查詢,並編輯您的問題標籤。它不能既是mysql也是oracle。 –

+0

那麼,你的組是由(user_id,start_date,end_date)來標識的?這有點不尋常,因爲您的時間間隔重疊,即使對於同一個用戶。是否存在(或者是否需要)輔助ID,以區分這些時間間隔?如果user_id 1在同一時間段內有兩個信用點和兩個借方 - 如何區分它們? (或者你把它們加在一起 ​​- 但是,爲什麼?當你有重疊的時間間隔時沒有多少意義)。 – mathguy

+0

@ mathguy-不,我不總結任何東西。用戶在特定的時間間隔內只有一組信用值,借記和餘額值。 對於相同的VAR_ID,即對於信用卡,借記卡或餘額,該用戶不會重複該時間間隔。 – John

回答

1

有條件聚合

SELECT 
    u.user_id 
    ,SUM(CASE WHEN var_id = 25 THEN u.Value END) AS Credit 
    ,SUM(CASE WHEN var_id = 56 THEN u.Value END) AS Debit 
    ,SUM(CASE WHEN var_id = 89 THEN u.Value END) AS Balance 
    ,Start_Date 
    ,End_Date 
FROM 
    user_var u 
GROUP BY 
    u.user_id 
    ,start_date 
    ,end_date