Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-添加空白列并基于计算的datediff列中的值进行填充_Sql_Sql Server_Tsql - Fatal编程技术网

SQL-添加空白列并基于计算的datediff列中的值进行填充

SQL-添加空白列并基于计算的datediff列中的值进行填充,sql,sql-server,tsql,Sql,Sql Server,Tsql,我是SQL新手,也是自学成才的……所以请说清楚。 我试图在我的数据中添加一个空白列,该列将显示“天数”列中的数字是否为: 15-21天之间为15-21天 ,22-28天为22-28天 超过28天的违约时间 我可以使用''作为状态获得一个空白列。我只需要知道如何填充它 declare @HG Varchar (100) set @HG = 'Clinical Support - Health Group' SELECT distinct OURREF as [DATIX ref], DAT

我是SQL新手,也是自学成才的……所以请说清楚。 我试图在我的数据中添加一个空白列,该列将显示“天数”列中的数字是否为:

15-21天之间为15-21天 ,22-28天为22-28天 超过28天的违约时间

我可以使用
''作为状态获得一个空白列
。我只需要知道如何填充它

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

为什么要按分组?我找不到任何聚合函数。无需在此处选择distinct,
UNION
将在最后删除所有重复的函数。您使用的是哪种dbms,MySQL还是MS SQL Server?要获得更好的答案,请更快地简化问题!没有别的原因,只是因为我对这个很陌生。。。。