我有三个表 - 信息,文章和作者
INFO
\----+-----------+------------+
| ID | AuthorID | ArticleID |
+----+-----------+------------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | NULL |
| 4 | 1 | 3 |
文章
\----+------------+
| ID | Status |
+----+------------+
| 1 | Confirmed |
| 2 | Pending |
| 3 | Reviewing |
作者
\----+----------+
| ID | Status |
+----+----------+
| 1 | John |
| 2 | Mark |
| 3 | Peter |
我想算一下有多少"确认"有多少"未确认"每个作者都有的文章。 "未确认"文章包括没有状态的所有内容"已确认"或者在INFO TABLE中为NULL。
对于这个小例子,答案应该是:
\--------+-----------+---------------+
| AUTHOR | CONFIRMED | NON-CONFIRMED |
+--------+-----------+---------------+
| John | 1 | 1 |
| Mark | 0 | 1 |
| Peter | 0 | 1 |
答案 0 :(得分:2)
你走了。我在重新创建数据集时使用了临时表。替换为您的表名。
select c.status , sum(case when b.status ='confirmed' then 1 else 0 end)Confirmed, sum(case when b.status ='confirmed' then 0 else 1 end)NonConfirmed
from #info a left join #article b on a.articleid=b.id
left join #authors c on a.authorid=c.id
group by c.status