2017-02-17 33 views
0

請幫我解決下一個問題。 我有一個表:多行加入

| Name | Size | DateTime | 
|--------|--------|--------------| 
| Adi | 120 | 2017-01-26 | 
|--------|--------|--------------| 
| Mark | 225 | 2017-01-11 | 
|--------|--------|--------------| 
| Adi | 150 | 2017-01-28 | 
|--------|--------|--------------| 
| Adi | 115 | 2017-02-01 | 
|--------|--------|--------------| 
| Adi | 170 | 2017-02-05 | 
|--------|--------|--------------| 

我需要把一個多列,每個名字都註冊(如果存在),ordereb由DateTime列如下:

| Name | Size1 | Size2 | Size3 | 
|--------|-------|-------|-------| 
| Adi | 120 | 150 | 115 | 
|--------|-------|-------|-------| 

我有嘗試:

SELECT DISTINCT table.Name, table.Size 
FROM database.table AS table 
JOIN database.table AS table1 
ON table.Name = table.Name 

謝謝你的幫忙!

+0

現在還不清楚你在問什麼。在查詢中添加一列是不夠的?你是否缺少行(使用LEFT JOIN)。 –

+0

我需要爲每個名稱的所有註冊(如果存在)再添加一列,或由DateTime列 – Adrian

回答

1

按您希望成爲唯一的列進行分組。像min()這樣的聚合函數適用於每個唯一的組,並且不適用於整個結果集

select name, 
     min(size) as size1, 
     max(size) as size2 
from your_table 
group by name 
having min(size) <> max(size) 
+0

ordereb謝謝您的回覆,但我需要按日期排序。並可能有5或15條目同名但日期不同 – Adrian

+0

請更新您的問題。添加您的真實需求 –