sql - SQL - 添加空白列并根据计算的 datediff 列中的值进行填充
问题描述
我对 SQL 非常陌生,而且是自学的....所以请清楚。我正在尝试在我的数据中添加一个空白列,该列将显示天数列中的数字是否为:
15-21 天 15-21 天 ,22-28 天 22-28 天 ,>28 天 违反
我可以使用' ' AS Status
. 我只需要知道如何填充它
declare @HG Varchar (100)
set @HG = 'Clinical Support - Health Group'
SELECT distinct OURREF as [DATIX ref], DATE_OPENED as [Date opened (dd/mm/yyyy)], DATE_OF_INCIDENT as [Incident date], ORGANISATION AS [Health Group], DIRECTORATE as [Division], SPECIALTY as [Specialty], ACTUAL_LOCATION As [Exact location], SEVERITY as [Severity], DATEDIFF(Day, DATE_OPENED, CURRENT_TIMESTAMP) as Days, INCIDENT_TYPE as [Type], CATEGORY as [Category], SUBCATEGORY as [sub Category], APPROVED_CODE as [Current approval status], inc_mgr AS [Handler]
FROM [CDI_PATEX_INCIDENTS] AS a
JOIN dbo.DATIX_incidents_main b on a.OURREF = b.inc_ourref
where OURREF not like 'SUI%' and APPROVED_CODE in ('INREV') and ORGANISATION in (@HG)
and DATEDIFF(dd,DATE_OPENED,GETDATE()) between 15 and 21
UNION
SELECT distinct OURREF as [DATIX ref], DATE_OPENED as [Date opened (dd/mm/yyyy)], DATE_OF_INCIDENT as [Incident date], ORGANISATION AS [Health Group], DIRECTORATE as [Division], SPECIALTY as [Specialty], ACTUAL_LOCATION As [Exact location], SEVERITY as [Severity], DATEDIFF(Day, DATE_OPENED, CURRENT_TIMESTAMP) as Days, INCIDENT_TYPE as [Type], CATEGORY as [Category], SUBCATEGORY as [sub Category], APPROVED_CODE as [Current approval status], inc_mgr AS [Handler]
FROM [CDI_PATEX_INCIDENTS] AS a
JOIN dbo.DATIX_incidents_main b on a.OURREF = b.inc_ourref
where OURREF not like 'SUI%' and APPROVED_CODE in ('INREV') and ORGANISATION in (@HG)
and DATEDIFF(dd,date_reported,GETDATE()) between 21 and 28
UNION
SELECT distinct OURREF as [DATIX ref], DATE_OPENED as [Date opened (dd/mm/yyyy)], DATE_OF_INCIDENT as [Incident date], ORGANISATION AS [Health Group], DIRECTORATE as [Division], SPECIALTY as [Specialty], ACTUAL_LOCATION As [Exact location], SEVERITY as [Severity], DATEDIFF(Day, DATE_OPENED, CURRENT_TIMESTAMP) as Days, INCIDENT_TYPE as [Type], CATEGORY as [Category], SUBCATEGORY as [sub Category], APPROVED_CODE as [Current approval status], inc_mgr AS [Handler]
FROM [CDI_PATEX_INCIDENTS] AS a
JOIN dbo.DATIX_incidents_main b on a.OURREF = b.inc_ourref
where OURREF not like 'SUI%' and APPROVED_CODE in ('INREV') and ORGANISATION in (@HG)
and DATEDIFF(dd,DATE_OPENED,GETDATE()) > 28
Group by OURREF, SPECIALTY, ORGANISATION, SEVERITY, DIRECTORATE, DATE_OPENED, DATE_OF_INCIDENT, ACTUAL_LOCATION, INCIDENT_TYPE, CATEGORY, SUBCATEGORY, DATE_REPORTED, APPROVED_CODE, inc_mgr
Order by Days desc
解决方案
你为什么不一次性完成它们,没有联合,并使用这种技术?
select
....,
case when DATEDIFF(dd, DATE_OPENED, GETDATE()) BETWEEN 21 AND 28 then 'x'
when DATEDIFF(dd, DATE_OPENED, GETDATE()) > 28 then 'y'
else 'z' end as Status
from tablex
推荐阅读
- c# - 从每个类别中获取第一项
- r - 在 ggplot2 条形图中,使用 scales 包在组内而不是在组之间累加百分比?
- sql-server - 如何在一个表上循环以更新另一个表
- kubernetes - 手动调用 kubernetes cron 作业时是否可以将参数传递给它?
- kubernetes - 错误:忽略 /etc/logrotate.conf,因为它可以由 kubernetes 中的组或其他人写入
- angular - CameraPreview.stopCamera() 后页面刷新无法正常工作
- python - 如果列值列表为 NULL,如何从熊猫数据框中删除行?
- c# - 无法处理 FindOne() C# 上的空值异常
- java - 在 spring-cloud-gateway 中的 .route() 方法中使用 uri() 方法两次
- javascript - 如果打印控制台日志是正常的。但执行是空的