Помощь SQL-запросов - PullRequest
       0

Помощь SQL-запросов

1 голос
/ 28 сентября 2010

Это не домашнее задание, просто что-то на работе, что меня беспокоит.

Я пытаюсь написать запрос к этим таблицам ниже. Две таблицы, history и code, объединяются в таблице historyassignment столбцами historyid и codeid.

Table: HistoryAssignment

| AssignmentID | HistoryID | CodeID |
|--------------|-----------|--------|
| 1            | 100       | 200    |
|--------------|-----------|--------|
| 2            | 101       | 201    |
|--------------|-----------|--------|
| 3            | 102       | 202    |
|--------------|-----------|--------|

Table: Code 

| CodeID | Desc |
|--------|------|
| 200    | ABC  |
|--------|------|
| 201    | DEF  |
|--------|------|
| 202    | GHI  |
|--------|------|

Table: History

| HistoryID | Desc | HistDate |
|-----------|------|----------|
| 100       | JKL  | 5/1/2010 |
|-----------|------|----------|
| 101       | MNO  | 7/1/2009 |
|-----------|------|----------|
| 102       | PQR  | 7/9/2010 |
|-----------|------|----------|
| 103       | STU  | 6/2/2010 |
|-----------|------|----------|
| 104       | VWX  | 5/7/2010 |
|-----------|------|----------|
| 105       | YZ   | 2/5/2010 |
|-----------|------|----------|

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

Year    Month   Total   Mapped
2009    7   1   1
2010    2   1   0
2010    5   2   1
2010    6   1   0
2010    7   1   1

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 28 сентября 2010
SELECT   YEAR(HistDate) [Year]      ,
         MONTH(HistDate) [Month]    ,
         COUNT(h.HistoryID) [Total] ,
         COUNT(DISTINCT ha.HistoryID) [Mapped]
FROM     History h
         LEFT OUTER JOIN HistoryAssignment ha
         ON       ha.HistoryID = h.HistoryID
GROUP BY YEAR(HistDate),
         MONTH(HistDate)
ORDER BY YEAR(HistDate),
         MONTH(HistDate)
...