2014-12-02 72 views
1

查詢表「user_hours」與獲取數據如下格式:顯示垂直數據爲水平數據與Oracle防止重複記錄

ID User_ID Name Date  User Hours 
--- ------ ---- --------- ------- 
1 1  foo 1-12-2014 null 
2 2  bar 1-12-2014 null 
3 3  zam 2-12-2014 8 
4 3  zam 3-12-2014 4 

我試圖得到一個查詢,以便與同User_ID記錄應顯示像如下:

User_ID Name Date  User Hours 
------ ----- -----  ----- 
1  foo 1-12-2014 null 
2  bar 1-12-2014 null 
3  zam 2-12-2014 8 
3  zam 3-12-2014 4 

在這裏,您可以觀察該User_ID3名稱爲zam重複兩次,但小時84。如果我group_by然後單個條目將顯示,但然後hours顯示將是一個問題。

如何防止重複User_ID顯示並顯示相關的DateHours的正確時間。

+0

在標題你說 「甲骨文」,但你已經標記爲'mysql'的問題 - 什麼你真的在用嗎? – 2014-12-02 12:31:23

回答

1

據我所知,您要查詢的是:

SELECT User_ID, Name, Date, UserHours 
FROM table t 
ORDER BY User_ID, Date; 

我缺少的東西?

0
SELECT User_ID, Name, SUM(UserHours) 
FROM table t 
GROUP BY User_ID, Name 
ORDER BY User_ID, Name; 

如果我正確地理解了你,你想顯示小時數,對不對?

+0

查看小提琴 - http://sqlfiddle.com/#!4/480e2/11 – Slimshadddyyy 2014-12-02 12:04:34

+0

我們如何顯示'user_id = 3','date = 2-12-2014',小時是'8',以及'日期= 3-12-2014'小時是'4'? – Slimshadddyyy 2014-12-02 12:05:57

+0

在'SELECT'和'GROUP BY'子句中都添加'UserHours'。 – mudasobwa 2014-12-02 12:07:23

0

試試這個:

SELECT a.user_id, a.name, a.date_ent, SUM(a.hours) hours 
FROM supportContacts a 
GROUP BY a.user_id, a.name, a.date_ent 
ORDER BY a.user_id, a.name, a.date_ent 

檢查SQL FIDDLE DEMO

輸出

| USER_ID | NAME | DATE_ENT | HOURS | 
|---------|------|-----------|-------| 
|  1 | foo | 1-12-2014 |  0 | 
|  2 | bar | 1-12-2014 |  0 | 
|  3 | zam | 2-12-2014 |  8 | 
|  3 | zam | 3-12-2014 |  4 | 
+0

小提琴在這裏 - http://sqlfiddle.com/#!4/ffb87/10 – Slimshadddyyy 2014-12-02 12:27:13

+0

@Slimshadddyyy檢查我更新的答案與小提琴演示 – 2014-12-02 12:30:27