2013-08-19 2 views
1

Мне нужно создать диаграмму из данных из таблицы. Эта таблица имеет следующую дату:SQL of daterange без пустых пространств

Timestamp | Value 
01-20-2013| 5 
01-21-2013| 7 
01-22-2013| 3 
01-25-2013| 5 

Как вы можете видеть, не каждая дата имеет значение. Если я помещу это в диаграмму, это выглядит странно. Даты используются для оси X. Поскольку отсутствуют значения 01-23-2013 и 01-24-2013, эти значения либо не печатаются на диаграмме (выглядит странно), либо напечатаны, то строка диаграммы переходит от 3 непосредственно к 5, а не к 0, как следует ,

Есть ли способ, с помощью SQL для выбора данных, так что это выглядит следующим образом:

Timestamp | Value 
01-20-2013| 5 
01-21-2013| 7 
01-22-2013| 3 
01-23-2013| 0 
01-24-2013| 0 
01-25-2013| 5 

Любая помощь приветствуется!

С уважением, Alex

Edit: я понятия не имел, что ядро ​​базы данных было важно. Это работает в базе данных MySQL 5 (не уверен в полной версии).

+0

Какую систему баз данных вы используете? –

+0

Какая версия SQL? Вот метод для SQL-сервера ... http: //stackoverflow.com/questions/12597143/query-for-how-to-add-the-missing-dates-in-sql – xQbert

+0

Это база данных MySQL 5. Сожалею. Я добавил эту информацию выше. – AlexWerz

ответ

2

Существуют различные способы сделать это, в зависимости от базы данных. Функции даты, как известно, независимы от базы данных.

Вот подход с использованием «драйвер» таблицу со всеми датами и использовать это для левого внешнего соединения:

select driver.timestamp, coalesce(t.value, 0) as value 
from (select distinct timestamp + n.n as timestamp 
     from t cross join 
      (select 0 as n union all select 1 union all select 2 union all select 3 
      ) 
    ) driver left outer join 
    t; 

Эта версия предполагает, что существуют пробелы не более трех дней.

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

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

  • Нет связанных вопросов^_^