如何从多个查询创建表

时间:2018-06-13 10:12:25

标签: sql-server tsql sql-server-2014

我正在尝试创建一个表来计算来自两个不同表的项目,以获得总计和小计,如下所示:

(select count(*) from ccustomer AS TotalCustomers)    
(select count(*) from ccustomer where floating = 0 AS ActiveCustomers),    
(select count(*) from ccustomer where floating = 1 AS FloatingCustomers),    
(select count(*) from pproperty AS TotalProperties)    
(select count(*) from pproperty where occcustno = 0 and propstat <> 'de' AS VoidProperties),    
(select count(*) from pproperty where occcustno = 0 and propstat = 'de' AS DemolishedProperties),    
(select count(*) from pproperty where occcustno <> 0 AS OccupiedProperties);

首先,这些查询在第2 + 3行(第1行的小计)和5 + 6 + 7(4的小计)中返回'AS'附近的语法问题。我无法理解这一点,因为我每次尝试使用或不使用括号等重新格式化。

  

第15行,第1行,第2行   
关键字“AS”附近的语法不正确。   
第3行,第1行,第15行   
关键字“AS”附近的语法不正确。   
第15行,第1行,第5行   
关键字“AS”附近的语法不正确。   
信息156,第15级,第1行,第6行   
关键字“AS”附近的语法不正确。   
第15行,第1行,第7行   
关键字“AS”附近的语法不正确。

我需要生成一个包含这些标题和总计/小计的表,所以不知道这是否有效。我有另一个查询,前同事使用NumberCheck创建了一个表,但是对我来说复制有点太复杂了(他不再在这里寻求帮助)。

非常感谢任何帮助。 谢谢 利安

1 个答案:

答案 0 :(得分:2)

试试这个:

create table ccustomer(floating int)
create table pproperty(occcustno int, propstat nvarchar(50) )
insert into ccustomer values (1),(0),(1),(0),(1),(0),(1),(0),(1),(1)
insert into pproperty values (0,'de'), (1,'de'), (0,'de'), (0,'us'), (1,'de'), (1,'us'), (1,'de')

select
(select count(*) from ccustomer) AS TotalCustomers,
(select count(*) from ccustomer where floating = 0) AS ActiveCustomers,    
(select count(*) from ccustomer where floating = 1) AS FloatingCustomers,    
(select count(*) from pproperty ) AS TotalProperties,    
(select count(*) from pproperty where occcustno = 0 and propstat <> 'de') AS VoidProperties,    
(select count(*) from pproperty where occcustno = 0 and propstat = 'de') AS DemolishedProperties,    
(select count(*) from pproperty where occcustno <> 0) AS OccupiedProperties;

在脚本中我创建了一个示例输入场景:

enter image description here

结果:

enter image description here