sql - 用于从内部连接评估布尔逻辑的 SQL 查询
问题描述
尝试从数据集中确定 PASS/FAIL 结果,其中列中的预期 FLAG 值数量是预先确定的,并且相同行的另一列与特定文本匹配。
如果在 Descript 列中找到的值的数量等于预定的数量,并且每行的 PValue 与文本“PASS”匹配,则结果为文本“PASS”。
如果找到的值的数量不等于预定数量,则无论 PValue 内容如何,结果都是文本“FAIL”。
如果找到的值的数量等于预定数量,但一个或多个 PValue 条目不等于“PASS”,则结果文本为“FAIL”。
预期 FLAG 行数 = 3 的示例输入数据:
描述 | P值 | 唯一身份 |
---|---|---|
最后的 | 年 | 1 |
旗帜 | 经过 | 2 |
掌握 | 产品 | 3 |
旗帜 | 经过 | 4 |
FLb | 经过 | 5 |
主要的 | 部长 | 6 |
劳里 | 测验 | 7 |
旗帜 | 经过 | 8 |
休 | 谁 | 9 |
上述数据的预期结果:
数数 |
---|
经过 |
否则输出:
数数 |
---|
失败 |
到目前为止,这是我的查询:
DECLARE @ExpectedNumFlags AS INT = 3
select count(*) as 'count'
FROM
(
SELECT [Descript]
,[PValue]
,[uniqueID]
FROM [MyBookLibraryDB].[dbo].[Historian]
WHERE [Descript] = 'FLAG'
) AS t
INNER JOIN
(
select count(*) as 'count'
FROM
(
SELECT [Descript]
,[PValue]
,[uniqueID]
FROM [MyBookLibraryDB].[dbo].[Historian]
WHERE [Descript] = 'FLAG'
) AS z
WHERE [PValue] = 'PASS'
) AS q
on q.count = @ExpectedNumFlags -- this doesn't make sense
最后一个 ON 子句只是我四处游荡,试图解决这个问题……并意识到我需要帮助。
请指教。谢谢(在按照 SO 表指导精心格式化数据后,预览显示了漂亮的表,然后帖子看起来像垃圾!)
解决方案
如果在 Descript 列中找到的值的数量等于预定的数量,并且每行的 PValue 与文本“PASS”匹配,则结果为文本“PASS”。
如果我理解正确,您只关心FLAG
行。并且您想知道是否所有标志行都'PASS'
具有预期的数量。如果是这样,这是关于总量的条件逻辑:
select (case when sum(case when pvalue = 'PASS' then 1 else 0 end) = count(*) and
count(*) = <predetermined number>
then 'PASS' else 'FAIL'
end)
from [MyBookLibraryDB].[dbo].[Historian]
where desript = 'FLAG'
推荐阅读
- javascript - 使用打字稿进行通用类型保护
- mysql - 如何在 MySQL 中使用 RLIKE/REGEXP 模式 .*
- java - 如何使用 errorPage 属性从 JSP 中捕获 Servlet 异常?
- c++ - 调用 vkCreateGraphicsPipelines 时出现分段错误
- python - PyQt:从 QListWidget 中的自定义小部件中单击按钮的插槽
- node.js - 如何通过 firebase 托管在 firebase 上托管 node.js Web 应用程序(包含多个文件夹)?
- wordpress - 在 Wordpress 的“最近评论”小部件(侧边栏)中排除“未分类”的帖子评论
- javascript - Javascript 类属性被初始化为未定义
- python - 使用 selenium 使用 jscript _doPostBack 链接显示“下一个”搜索结果
- mysql - 我如何显示当我使用 vb.net 加载我的第一个表单时显示的第一个面板