2014-03-10 6 views
2

Я использую SQL Server. Я извлекаю информацию из разных таблиц, и я могу это сделать.MAX - MIN для каждого дня в SQL

В моей таблице есть столбец sampletime, который каждые 30 минут и столбец значений. Я хочу написать запрос, чтобы получить разницу (max-min) за каждый день, любые предложения, как я могу это сделать?

Например:

SIGNAL NAME  SAMPLETIME     VALUE 
Spazio-Percorso 2014-03-06 15:01:50.3170000 219345 
Spazio-Percorso 2014-03-06 15:31:50.3260000 219384 
Spazio-Percorso 2014-03-06 16:01:50.3380000 219388 
Spazio-Percorso 2014-03-06 16:31:50.3460000 219388 
Spazio-Percorso 2014-03-06 17:01:50.3590000 219400 
Spazio-Percorso 2014-03-06 17:31:50.3690000 219434 
Spazio-Percorso 2014-03-06 18:01:50.3760000 219471 

В этом примере все строки находятся в тот же день, что я хочу, чтобы иметь только один ряд на каждый день, и в столбце значений хотят иметь MAX-MIN из в тот же день

+0

Какая версия SQL Server? – Szymon

+0

Студия управления MSSQL 2008 – Furqan

+0

@Furqan И какой вопрос SQL Server? Просто, что вы используете устаревшую студию управления, не означает, что сервер также работает за 2 поколения. – TomTom

ответ

2

Попробуйте

SELECT [SIGNAL NAME], CAST(SAMPLETIME AS DATE) AS SAMPLEDATE, MAX(VALUE)-MIN(VALUE) As Diff_Value 
FROM Table1 
GROUP BY CAST(SAMPLETIME AS DATE),[SIGNAL NAME] 
+0

Используйте 'CAST (SAMPLETIME AS DATE)' в вашем избранном обмене 'SAMPLETIME'. – Hamidreza

+0

Из-за группы моим другом ваш запрос работает отлично. – Hamidreza

+0

thanx для образца, но, например, если мы добавим больше строк в мой пример, в котором время семян имеет дату 7-го марта, будет ли этот запрос давать мне 2 строки в результате, по одному на каждый день? – Furqan

0

Если вы используете SQL Server 2008 или выше, вы можете преобразовать столбец DATETIME в DATE, чтобы избавиться от значения времени:

SELECT 
    [SIGNAL NAME], 
    CAST(SAMPLETIME AS DATE) AS SAMPLEDATE, 
    MAX(VALUE) - MIN(VALUE) AS VALUE 
FROM Table1 
GROUP BY [SIGNAL NAME], CAST(SAMPLETIME AS DATE) 
+0

На самом деле я не хочу иметь значения max и min, я хочу иметь разницу между ними, которая является max() - Min() – Furqan

+0

Да, я заметил и уже обновил свой ответ. – Szymon

+0

Твой образец мой друг http://sqlfiddle.com/#!3/65b7f/4 – Hamidreza

Смежные вопросы