sql - 基于 1 个表中的 3 列的 case 语句
问题描述
我正在尝试在我的 sql 代码中创建一个字段,如果第 1 行和第 2 行中的 MRN 值相同并且相应的 TF_GROUP 相同但两行的 PathId 字段不同,那么新字段应该有一个“是”,否则它应该默认为“否”。我可以在 excel 中创建这个字段,但我正在努力在 sql 中创建类似的东西。我已经包含了我编写的 excel 语句,理想情况下我希望将其复制到下面的 sql 语句中。
=IF(AND(B2=B3,D2=D3,A2<>A3),"Yes","No")
我基本上想要一个类似于上面的 excel 函数的 sql 语法,我可以在 sql server 中使用它来创建我想要的列。
下面是我用 3 个字段(PathID、MRN、TF_GROUP)编写的 sql 代码。
select DISTINCT
[Pathway ID] PathID,
MRN,
DENSE_RANK() OVER(PARTITION BY mrn ORDER BY [Pathway ID]) RK,
[Treatment Function Group] TF_GROUP,
'' [Flag]
from [HRS_RTT].[dbo].[tbl_PMM_IncompletePTL_CG_Snapshot]
where convert(date,censusdate) between '03-jun-19' and '09-jun-19'
AND MRN IS NOT NULL
AND [Treatment Function Group] IS NOT NULL
order by
MRN,
[Pathway ID]
这是运行嵌入式 sql 代码后的部分输出(见下面的链接)。名为“标志”的列是我在上面的 sql 代码中努力复制的内容。目前,我必须将输出复制到 excel 中,然后使用我之前在上一篇文章中包含的函数填充“标志”列。
解决方案
SELECT
CASE
WHEN B2 = B3 AND D2 = D3 AND A2 <> A3 THEN 'Y'
ELSE 'N'
END AS SomeColumnName
FROM SomeTable
资料来源: https ://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql?view=sql-server-2017
推荐阅读
- java - 重新加载页面时Websocket中断
- python - 如何在熊猫数据框中选择最高值,而不是多次选择同一列和同一行
- android - CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE 永远不会在片段中被调用
- jsf - primefaces 对话框幻灯片效果
- php - php从特定位置解析html数据
- c# - 如何在 Unity 中从 Android 设备打开 pdf?
- javascript - 如何在 apexChartjs 上隐藏一些 xaxis 标签元素?
- python - 如果第一个匹配二维数组,Numpy 添加第二个值
- typescript - 你如何创建一个枚举模块?
- matplotlib - Seaborn:如何在累积的 KDE 中绘制与特定 y 值匹配的垂直线?