这不是一个家庭作业问题,只是在工作中让我烦恼的事情。
我正在尝试针对下面的这些表编写查询。这两个表,历史记录和代码通过historyid和codeid列连接到historyassignment表。
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 |
|-----------|------|----------|
我的目标是获取历史数据表中映射的历史ID总数以及历史记录表中的历史ID总数。结果应该在历史表中对histdate列的月份和年份进行分组。如下。
Year Month Total Mapped
2009 7 1 1
2010 2 1 0
2010 5 2 1
2010 6 1 0
2010 7 1 1
非常感谢任何协助。
答案 0 :(得分:1)
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)