2016-03-01 6 views
0

В моей базе данных У меня есть Timestamps, Source, ID и Value все в одной таблице. По существу она отображается как этотSQL Querying with New Columns

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<title>Query</title> 
 
</head> 
 
<body> 
 
<table border="1"> 
 
<tr> 
 
<td>Timestamp</td> 
 
<td>Source</td> 
 
<td>ID</td> 
 
<td>Value</tr> 
 
</tr> 
 
</table> 
 
</body> 
 
</html>

Теперь у меня есть тонны различных источников и идентификаторов, поэтому мне было интересно, если я мог бы создать запрос, где метка времени разделяется между двумя различными источниками и идентификаторы. Результирующая таблица из запроса, я бы искал что-то вроде этого:

<!DOCTYPE html> 
 
    <html> 
 
    <head> 
 
    <title>Query</title> 
 
    </head> 
 
    <body> 
 
    <table border="1"> 
 
    <tr> 
 
    <td>Timestamp</td> 
 
    <td>Value at Source = 123, ID = 456</td> 
 
    <td>Value at Source = 789, ID = 000</td> 
 
    </tr> 
 
    </table> 
 
    </body> 
 
    </html>

Является ли это то, что можно достичь, или я бы лучше вытягивать это и перегруппировки данных где-нибудь еще?

+0

Это похоже на то, что вы хотите «ЗАКАЗАТЬ» ваши результаты и отображать группы временных меток вместе. –

ответ

0

Вы присоединяетесь таблица против себя, чтобы найти записи, которые соответствуют определенным значениям и отличаются от других:

SELECT a.Timestamp, 
    a.Value AS Value_1, a.Source AS Source_1, a.ID AS ID_1, 
    b.Value AS Value_2, b.Source AS Source_2, b.ID AS ID_2 
FROM MyTable a 
INNER JOIN MyTable b 
ON a.Timestamp = b.Timestamp 
AND a.Source <> b.Source 
AND a.ID <> b.ID 

Это не совсем ясно из вашего вопроса, что именно результат должен выглядеть, но вы должны быть способный играть с выбранными столбцами, чтобы получить то, что вы хотите.

Вы должны также иметь индексы для трех столбцов, используемых в соединении, если производительность важна.