Присоединяйтесь к каждой возможной комбинации для каждой группы - PullRequest
0 голосов
/ 03 августа 2011

У меня есть 2 таблицы

T1
order1      grp
----------- -----------
1           1
2           1
3           1
4           1
1           2
2           2
3           2

T2
order1      count1      abbrev grp
----------- ----------- ------ -----------
2           5           A      1
1           17          B      2
2           11          B      2

Таблицы объединяются следующим образом:

SELECT 
  t2.grp, t2.order1, t2.count1, t2.abbrev 
FROM t2 
JOIN t1
ON
  t1.grp = t2.grp and
  t1.order1 = t2.order1

Результат:

grp         order1      count1      abbrev
----------- ----------- ----------- ------
1           2           5           A
2           1           17          B
2           2           11          B

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

grp         order1      count1      abbrev
----------- ----------- ----------- ------
1           1           0           A
1           2           5           A
1           3           0           A
1           4           0           A
2           1           17          B
2           2           11          B
2           3           0           B

1 Ответ

3 голосов
/ 03 августа 2011
SELECT
  cube.grp,
  cube.order,
  ISNULL(data.count, 0),
  chars.abbrev
FROM
  @t1   AS cube
INNER JOIN
  (SELECT grp, abbrev FROM @t2 GROUP BY grp, abbrev) AS chars
    ON chars.grp = cube.grp
LEFT JOIN
  @t2   AS data
    ON  data.grp    = cube.grp
    AND data.order  = cube.order
    AND data.abbrev = chars.abbrev
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...