select COUNT(analysed) from Results where analysed="True"
我想显示分析值为true的行数。
但是,我的查询给出错误:“多部分标识符”Results.runId“无法绑定。”。
这是实际查询:
select ((SELECT COUNT(*) AS 'Count'
FROM Results
WHERE Analysed = 'True')/failCount) as PercentAnalysed
from Runs
where Runs.runId=Analysed.runId
我的表架构是:
我想要的特定runId的值是:(分析的条目数= true)/ failCount
编辑:如何合并这两个查询?
i)选择runId,Runs.prodId,prodDate,prodName,buildNumber,totalCount作为TotalTestCases,(passCount * 100)/(passCount + failCount)作为PassPercent, 来自Runs的passCount,failCount,runOwner,Runs.prodId = Product.prodId的产品
ii)选择(cast(counts.Count as decimal(10,4))/ cast(failCount as decimal(10,4)))作为PercentAnalysed 从运行 内部联接 ( SELECT COUNT(*)AS'Rec',runId 从结果 WHERE Analyzed ='True' GROUP BY runId 计数 on counts.runId = Runs.runId
我试过这个:
选择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,产品
内部联接
(
SELECT COUNT(*)AS'Rec',runId
从结果
WHERE Analyzed ='True'
GROUP BY runId
计数
on counts.runId = Runs.runId
其中Runs.prodId = Product.prodId
但它会出错。
答案 0 :(得分:1)
我会尝试以下查询:
SELECT COUNT(*) AS 'Count'
FROM Results
WHERE Analysed = 'True'
这会计算Analyzed为'True'
的所有行。如果Analysed
列的数据类型是BIT(布尔值)或STRING(VARCHAR,NVARCHAR),这应该有效。
答案 1 :(得分:1)
您的问题是由于表格的不正确加入引起的。您需要来自运行和结果的信息,但它们在查询中未正确组合。你有一个嵌套子查询的正确想法,但它在错误的位置。您还引用了外部where子句中的Analyzed表,但它未包含在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
我已将其设置为内连接,以消除任何没有分析结果的运行;如果需要这些行,可以将其更改为左连接,但需要添加代码来处理null情况。我还为这两个数字添加了强制转换,因为否则查询将执行整数除法并截断任何小数量。
答案 2 :(得分:0)
在CASE
Count
SELECT COUNT(CASE WHEN analysed='True' THEN analysed END) [COUNT]
FROM Results
答案 3 :(得分:0)
select COUNT(*) from Results where analysed="True"