2016-09-28 61 views
0

是否可以将两个Select语句组合到一个表中的2个单独列中,然后将它们划分为%?计算列中的两个Select语句为%

Select count(*) as 'Quote with VIN' 
From BSIT_ERA_RAW_DATA.dbo.QUOTE 
where LEN(inv_vehicle_id) = 17 

与下面的第二个SELECT语句:

select count(*) as 'Number of Quote' 
from BSIT_ERA_RAW_DATA.dbo.QUOTE 

预期的结果会是这样的下面:

Quote with VIN | Number of Quote | Result 
----------------------------------------- 
116260   | 195850   | 59.36% 
+0

chg'd标记到'sql-server',一个预感 – Drew

+0

感谢家伙的澄清... – AlvinWi

回答

2

可以使用条件聚集到逻辑从两个查询合并成单个查询:

SELECT SUM(CASE WHEN LEN(inv_vehicle_id) = 17 THEN 1 END) AS `Quote with VIN`, 
     COUNT(*) AS `Number of Quote`, 
     CONCAT(ROUND(100 * SUM(CASE WHEN LEN(inv_vehicle_id) = 17 THEN 1 END)/COUNT(*), 2), 
       '%') AS Result 
FROM BSIT_ERA_RAW_DATA.dbo.QUOTE 
+0

出色地工作..非常感谢 – AlvinWi

0

您可以使用条件聚合。在MySQL中,你可以用短切做到这一点:

select sum(len(inv_vehicle_id) = 17)) as `Quote with VIN`, 
     count(*) as `Number of Quote` 
From BSIT_ERA_RAW_DATA.dbo.QUOTE ; 

在大多数其他数据库,你将需要使用case

此外,不要对列名使用单引号。这是一个等待发生的错误。最好的选择是选择不需要转义的名字。但是,如果你这样做,使用MySQL转义字符(反引号)。