【发布时间】:2015-04-01 08:11:49
【问题描述】:
select COUNT(analysed) from Results where analysed="True"
我想显示分析值为真的行数。
但是,我的查询给出了错误:“无法绑定多部分标识符“Results.runId”。”。
这是实际的查询:
select ((SELECT COUNT(*) AS 'Count'
FROM Results
WHERE Analysed = 'True')/failCount) as PercentAnalysed
from Runs
where Runs.runId=Analysed.runId
我的表架构是:
我想要的特定 runId 的值是:(analyticaled=true 的条目数)/failCount
编辑:如何合并这两个查询?
i) 选择 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) 选择 (cast(counts.Count as decimal(10,4)) / cast(failCount as decimal(10,4))) 作为 PercentAnalysed 从运行 内部联接 ( 选择计数(*)作为“计数”,运行 ID 从结果 WHERE 分析 = '真' 按运行 ID 分组 ) 计数 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
从运行,产品
内部联接
(
选择计数(*)作为“计数”,运行 ID
从结果
WHERE 分析 = '真'
按运行 ID 分组
) 计数
on counts.runId = Runs.runId
其中 Runs.prodId=Product.prodId
但它给出了错误。
【问题讨论】:
-
从结果中选择 COUNT(analyzed) where analysed=True 不要给出“True”
-
analysed列是什么数据类型?如果它是 BIT 字段,那么select COUNT(analysed) from Results where analysed=1应该可以工作,因为在设置 BIT 字段时,使用0表示'False'和1表示'True'。请注意,0或1周围没有引号。如果它是 varchar,那么单引号将起作用select COUNT(*) as [Count] from Results where analysed = 'True' -
单引号应该可以正常工作。
-
@chridam -
select CAST('True' AS BIT), CAST('False' AS BIT)都可以正常工作。 -
内部查询 (SELECT COUNT(*) AS 'Count' FROM Results WHERE Analyzed = 'True') 有效,但不是全部
标签: sql sql-server sql-server-2008 tsql