2016-09-28 59 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轉義字符(反引號)。