SQL Server: создать пустую строку? - PullRequest
0 голосов
/ 17 января 2012

Приветствую всех.

У меня есть база данных SQL Server 2008 Express с таблицей с именем tbl_Sales, аналогичной следующей:

Merchant | Sales |  Month
Comp.1      100     201101
Comp.1      200     201102
Comp.2      130     201102
Comp.1      250     201103
Comp.2      130     201103
Comp.3      240     201103
             .
             .
             .
Comp.3      340     201111
Comp.2      240     201112
Comp.3      140     201112

Я хочу сгенерировать следующие данные в диаграмме MVC3.

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

Итак, есть ли способ для SQL сделать результат следующим образом:

Merchant | Sales |  Month
Comp.1      100     201101
Comp.2        0     201101
Comp.3        0     201101
Comp.1      200     201102
Comp.2      130     201102
Comp.3        0     201102
Comp.1      250     201103
Comp.2      130     201103
Comp.3      240     201103
             .
             .
             .
Comp.3      340     201111
Comp.1        0     201112
Comp.2      240     201112
Comp.3      140     201112

У нас может быть другая таблица. tbl_Merchant перечислите всех необходимых нам торговцев следующим образом:

Merchant 
Comp.1
Comp.2
Comp.3
  .
  .
  .
Comp.10

Любое предложение будет приветствоваться.

Большое спасибо.

1 Ответ

2 голосов
/ 17 января 2012

Да - сделайте декартово объединение мерчантов с месяцами, о которых нужно сообщать (чтобы вы получали строку каждого месяца для каждого мерчанта), затем оставьте соединение с таблицей данных - например, так:

select mth.[Month], mct.Merchant, coalesce(s.Sales,0) Sales
from (select distinct [Month] from tbl_Sales) mth
cross join Merchant mct
left join tbl_Sales s 
       on mth.[Month] = s.[Month] and mct.Merchant = s.Merchant

(Если tbl_Sales особенно велик, может быть быстрее заполнить встроенное представление mth необходимым диапазоном месяцев из рекурсивного списка месяцев, сгенерированного CTE, вместо выбора необходимого набора месяцев из данных продаж.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...