Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Tsql 如果存在,则允许通过_Tsql_Reporting Services - Fatal编程技术网

Tsql 如果存在,则允许通过

Tsql 如果存在,则允许通过,tsql,reporting-services,Tsql,Reporting Services,我有一个catch脚本,当一个求和结果为空值时,该脚本将拾取并插入一个0,如果我分解了我正在使用的代码,该脚本在一个查询上运行良好,但在我当前的查询上不起作用 Declare @Period int = 5 SELECT A.MATTER_CODE,DATEPART(month,A.DATE_OPENED) As DateOpened,B.DEPTNAME,B.DEPTCODE INTO #TmpPREVYTD FROM MATTER A LEFT JOIN DEPT_MASTER B on

我有一个catch脚本,当一个求和结果为空值时,该脚本将拾取并插入一个0,如果我分解了我正在使用的代码,该脚本在一个查询上运行良好,但在我当前的查询上不起作用

Declare @Period int = 5
SELECT A.MATTER_CODE,DATEPART(month,A.DATE_OPENED) As DateOpened,B.DEPTNAME,B.DEPTCODE 
INTO #TmpPREVYTD
FROM MATTER A
LEFT JOIN DEPT_MASTER B on A.DEPT_CODE = B.DEPTCODE
WHERE A.date_opened between DATEADD(YEAR, DATEDIFF(YEAR, 0,DATEADD(YEAR, -1, GETDATE())), 120) and 
DATEADD(YEAR, DATEDIFF(YEAR, 0,DATEADD(YEAR, 0, GETDATE())), 120)
ORDER BY DATE_OPENED
这将在正确的年份和月份推出查询所需的数据

SELECT COUNT(*) As 'Fin',Dateopened Into #TmpPFin FROM #TmpPREVYTD where DEPTCODE = 'FIN' GROUP BY 
DATEOPENED
每次原始数据中都包含与财务相关的作业时,此项都会计算在内

SELECT SUM(FIN)As Fin INTO #PFIN FROM #TmpPFIN WHERE Dateopened Between 5 and @Period
然后将与所需的设置月份相关的所有月份相加,因此在本例中,我只希望它只计算May,而May中没有任何内容,因此它推送空值的原因

If EXISTS(Select Fin from #PFIN) 
GOTO TmpITD
Else insert into #PFIN (Fin) Values( 0) 
TmpITD:
最后,这是一个catcher,它应该查找PFin有一个空值并插入一个0,但是我认为它所做的是直接进入TmpITD,就好像我只是运行insert语句,它添加了0

所以现在如果我运行整个语句,我会得到一个空值,这意味着最后的报告是空的

我是否在这里遗漏了一些东西,因为这个完全相同的代码在其他查询中工作,但在这个查询中不工作,它似乎确实存在,但有一个空值,这让我完全困惑


编辑:如果我在TmpITD的末尾添加了一些内容,它会将其推出,这样我现在就可以确定问题是If Exists认为它确实存在,而实际上它是Null

如果您的最终表PFIN有行,那么即使其中的值为Null,它也存在。 解决方案可能是通过以下调整来删除空行并获得真正的空数据集:

If EXISTS(Select Fin from #PFIN WHERE Fin IS NOT NULL) 
GOTO TmpITD
Else insert into #PFIN (Fin) Values( 0) 
TmpITD:
或者,当您对一组空值进行分组时,由于聚合可以返回0,您可能也希望排除0值:

If EXISTS(Select Fin from #PFIN WHERE Fin <> 0) 
GOTO TmpITD
Else insert into #PFIN (Fin) Values( 0) 
TmpITD:
或者,对于那些避开后藤的人,如果不存在的话。。。插入