计数查询给出错误的列名错误

Count query giving wrong column name error

select  COUNT(analysed) from Results where analysed="True" 

我想显示分析值为真的行数。

但是,我的查询给出了错误:"The multi-part identifier "Results.runId" 无法绑定。"。

这是实际查询:

select ((SELECT COUNT(*) AS 'Count' 
  FROM Results 
  WHERE Analysed = 'True')/failCount) as PercentAnalysed 
from Runs 
where Runs.runId=Analysed.runId

我的 table 架构是:

我想要的特定 runId 的值是:(analysed=true 的条目数)/failCount

EDIT : 如何合并这两个查询?

i) select runId,Runs.prodId,prodDate,prodName,buildNumber,totalCount 作为 TotalTestCases,(passCount*100)/(passCount+failCount) 作为 PassPercent, passCount,failCount,runOwner from Runs,Product where Runs.prodId=Product.prodId

ii) select (cast(counts.Count as decimal(10,4)) / cast(failCount as decimal(10,4))) as PercentAnalysed 从运行 内部联接 ( SELECT COUNT(*) AS 'Count', runId 从结果 WHERE 分析 = 'True' 按 runId 分组 ) 计数 在 counts.runId = Runs.runId

我试过这个: select runId,Runs.prodId,prodDate,prodName,buildNumber,totalCount 作为 TotalTestCases,(passCount*100)/(passCount+failCount) 作为 PassPercent, passCount,failCount,runOwner,counts.runId,(cast(counts.Count as decimal(10,4)) / cast(failCount as decimal(10,4))) as PercentAnalysed 来自 Runs,Product 内部联接 ( SELECT COUNT(*) AS 'Count', runId 从结果 WHERE 分析 = 'True' 按 runId 分组 ) 计数 在 counts.runId = Runs.runId
其中 Runs.prodId=Product.prodId

但它给出了错误。

Count

中使用CASE
SELECT COUNT(CASE WHEN analysed='True' THEN analysed END) [COUNT]
FROM Results

我会尝试以下查询:

SELECT COUNT(*) AS 'Count'
FROM Results
WHERE Analysed = 'True'

这将统计分析为 'True' 的所有行。如果您的 Analysed 列的数据类型是 BIT (Boolean) 或 STRING(VARCHAR, NVARCHAR),这应该有效。

select  COUNT(*) from Results where analysed="True"

您的问题是由 table 的不正确连接引起的。您需要来自运行和结果的信息,但它们在您的查询中没有正确组合。您对嵌套子查询有正确的想法,但它在错误的位置。您还在外部 where 子句中引用了 Analyzed table ,但它没有包含在 from 子句中。

试试这个:

select (cast(counts.Count as decimal(10,4)) / cast(failCount as decimal(10,4))) as PercentAnalysed 
from Runs 
inner join
(
  SELECT COUNT(*) AS 'Count', runId 
  FROM Results 
  WHERE Analysed = 'True'
  GROUP BY runId
) counts
on counts.runId = Runs.runId

我已将其设置为内部联接,以消除任何没有分析结果的运行;如果需要这些行,可以将其更改为左连接,但需要添加代码来处理空情况。我还向这两个数字添加了转换,否则查询将执行整数除法并截断任何小数。