Sql server SQL Server:需要查询吗
我有三张桌子-Sql server SQL Server:需要查询吗,sql-server,Sql Server,我有三张桌子- Table_1 accid0v fcustn0v 1210001 A 1210002 B 1210003 C Table_2 accid0v cases0v 1210001 Open 1210001 Open 1210001 Resolved 1210002 Resolved 1210003 Open Table_3 accid0v actd0v 1210001 2/16/2
Table_1
accid0v fcustn0v
1210001 A
1210002 B
1210003 C
Table_2
accid0v cases0v
1210001 Open
1210001 Open
1210001 Resolved
1210002 Resolved
1210003 Open
Table_3
accid0v actd0v
1210001 2/16/2014
1210002 4/5/2014
1210003 6/8/2014
我想显示这样的数据
accid0v fcustn0v actd0v Total Open
1210001 A 2/16/2014 3 2
1210002 B 4/5/2014 1 0
1210003 C 6/8/2014 1 1
我正在使用sql server 2008。这是我的第一个想法
select
t1.accid0v
,t1.fcustn0v
,t3.actd0v
,sum(case when t2.cases0v='Open' then 1 else 0 end) as open
,sum(0) as total
from table_1 as t1
join table_2 as t2 on t2.accid0v=t1.accid0v
join table_3 as t3 on t3.accid0v=t1.accid0v
group by 1,2,3
一个相当直接的
JOIN
和groupby
就可以了
SELECT
a.accid0v, a.fcustn0v, c.actd0v,
COUNT(*) total, SUM(CASE WHEN b.cases0v='open' THEN 1 ELSE 0 END) [Open]
FROM table_1 a
JOIN table_2 b ON a.accid0v = b.accid0v
JOIN table_3 c ON a.accid0v = c.accid0v
GROUP BY a.accid0v, a.fcustn0v, c.actd0v
.您的
分组依据
语法(据我所知)在SQL Server上不起作用。@JoachimIsaksson-我收到一个错误-关键字“open”附近的语法不正确。我们可以在不使用SUM-CASE的情况下这样做吗?谢谢。@BoratSagdiyev有什么特别的原因吗?有多种方法可以编写查询,但我不太确定您在寻找什么。@JoachimIsaksson-我想知道数据库是否没有案例,然后如何使其工作,或者尝试自己模仿案例。@BoratSagdiyev您是指类似的情况吗?(尽管我想不出任何没有CASE的SQL数据库)@JoachimIsaksson-谢谢,这正是我的意思。你能把这个加在你的答案上吗?还是我应该?