从一个ASP SQL语句返回几个COUNT结果

ros*_*mcm 1 sql count asp-classic

说我有这样一张桌子:

Field1  Field2  Field3  Field4
fred    tom     fred    harry 
tom             tom
dick    harry
harry           
Run Code Online (Sandbox Code Playgroud)

我想确定每个领域已完成的比例.

我可以执行:

SELECT COUNT (Field1) WHERE (Field1 <> '') AS Field1Count      
SELECT COUNT (Field2) WHERE (Field2 <> '') AS Field2Count
SELECT COUNT (Field3) WHERE (Field3 <> '') AS Field3Count      
SELECT COUNT (Field4) WHERE (Field4 <> '') AS Field4Count  
Run Code Online (Sandbox Code Playgroud)

是否可以将这些单独的SQL语句汇总到一个将在一次命中中返回4个结果的语句?这样做是否有任何性能优势(假设在实践中列和行的数量可能非常大)?

Guf*_*ffa 5

你可以这样做:

select
  sum(case when Field1 <> '' then 1 else 0 end) as Field1Count,
  sum(case when Field2 <> '' then 1 else 0 end) as Field2Count,
  sum(case when Field3 <> '' then 1 else 0 end) as Field3Count,
  sum(case when Field4 <> '' then 1 else 0 end) as Field4Count
from TheTable
Run Code Online (Sandbox Code Playgroud)