Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:需要查询吗_Sql Server - Fatal编程技术网

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-谢谢,这正是我的意思。你能把这个加在你的答案上吗?还是我应该?