不返回任何内容时,t-sql会强制显示一条消息。使用CTE和CASE

布赖恩·卡斯科内(Brian Cascone)

我撤回了一些将在某些报告中使用的数据。大多数情况下,这将不返回任何数据,当不返回任何数据时,我希望最终用户看到一条消息,而当有数据时,我希望返回数据元素和其他消息。我将不包括CTE部分,仅包括CASE。应该足够了。我不确定为什么这行不通,应该是一个简单的案例。

SELECT Case when Sum(1) IS NULL  THEN 
    'NO DUPES MISSING INFO'
ELSE 
        CTE.ClaimNum + ' Claim is missing, Please populate'  
END AS MissingClaiminfo

FROM CTE

WHERE ClaimCheck > 0
OR CLAIMFormatCk > 0
OR CLAIMIdCheck > 0
OR CLAIM_DupID_Match > 0
Group by CTE.ClaimNum

返回的内容没有MissingClaimInfo的记录或消息。

任何帮助表示赞赏。

编辑---完整查询如下:

WITH Nasco_CTE (
                    CoClaimNum
                    ,ClaimNum
                    ,ClaimCheck
                    ,CLAIMFormatCk
                    ,CLAIMIdCheck
                    ,CLAIMID_DupID_Match
                )

AS
    (

        SELECT

             CW.User047 AS CoClaimNum
            ,CW.ClaimNum AS ClaimNum
            ,CASE WHEN Left(CW.User047,1) <> 0 THEN 1 ELSE 0 END As ClaimCheck  --     Checks for leading zeroes. 
            ,CASE WHEN SubString(CW.User047,LEN(LEFT(CW.User047, CharIndex('-    ',CW.User047) )),1) <> '-' THEN 1 ELSE 0 END AS CLAIMFormatCk   --- Checks for '-'
            ,CASE WHEN NASC.NascoClaimId = '' THEN 1 ELSE 0 END AS CLAIMIdCheck
            ,CASE WHEN NASC.NascoClaimId <> ECW.NascoClaimId THEN 0 ELSE 1 END AS     CLAIMID_DupID_Match

        FROM Screens.dbo.vClaimsWHSE CW
        LEFT JOIN [Screens].dbo.[vClaimsWHSE_RootReason] CWRR
            ON CW.ClaimCode = CWRR.Reason
        LEFT JOIN [Support].[dbo].[NascoDupID_Crosswalk] NASC
            ON  NASC.ClaimNum = SUBSTRING(CW.User047,0,CHARINDEX('-',CW.[User047]))
            AND NASC.LineSequenceNum =  SUBSTRING(CW.User047,CHARINDEX('-',CW.     [User047])+1,CHARINDEX('-',CW.[User047]))
        LEFT JOIN [Data].[dbo].[ExportCrosswalk] ECW
            ON CW.User001 = ECW.ClaimNum 
            AND CW.User002 = ECW.LineSequenceNum
        WHERE CW.user003 IN ('NC','RevRecon') 
            And NASC.ClaimId IS NOT NULL
    )


SELECT Case when COUNT(Nasco_CTE.ClaimNum) =''  THEN 
     'NO DUPES MISSING INFO'
ELSE 
     Nasco_CTE.ClaimNum + ' Claim is missing a DupNascoID.  Please check check that     USER047 is populated correctly: ClaimNum-LineNum EX: 020132952416600-1'  
END AS MissingNascoId 
FROM Nasco_CTE

WHERE ClaimCheck > 0
OR ClaimCheck > 0
OR CLAIMIdCheck > 0
OR CLAIMID_DupID_Match > 0
Group by Nasco_CTE.ClaimNum

请注意,当我从ELSE部分删除Nasco_CTE.ClaimNum +时,该代码有效。并删除分组依据。

Damien_The_Unbeliever

再创建几个CTE:

;WITH Nasco_CTE (/* Columns */)

AS
    (/* Definition */
), InitialResults as (
    SELECT CTE.ClaimNum + ' Claim is missing, Please populate'  
      AS MissingClaiminfo, 0 as Ord

   FROM CTE

   WHERE ClaimCheck > 0
   OR CLAIMFormatCk > 0
   OR CLAIMIdCheck > 0
   OR CLAIM_DupID_Match > 0
   Group by CTE.ClaimNum --This might not be needed any more, I think
   UNION ALL
   SELECT 'NO DUPES MISSING INFO',1
), Ranked as (
    SELECT *,RANK() OVER (ORDER BY Ord) as rk
)
SELECT * from Ranked where rk = 1

Ord 1如果不存在Ord等于0-的行,则只会产生具有该行的行,因此,您将获得所需的结果集仅显示一行NO DUPES MISSING INFO


通常,您可以使用上述技术(UNION ALL并对结果集进行编号),其中:

  • 您只需要一个结果集(如果其中包含任何结果)
  • 如果第一个结果集包含零个结果,则您需要一个不同的结果集
  • 第二个结果集(以及其他任何可以扩展的思想)与第一个结果集兼容
  • 第二个结果集(和其他结果集)的计算成本很低,因此无论如何您都不介意对其进行计算

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用OR WHERE时,Scala Doobie不返回任何内容

来自分类Dev

我的Listview在使用改造时不返回任何内容

来自分类Dev

使用 SqlParamter 时查询不返回任何内容:实体框架

来自分类Dev

WHERE不返回任何内容时,SQL WHERE!=子句不产生任何结果

来自分类Dev

过滤器在ng-repeat中不返回任何内容时如何显示消息-AngularJS

来自分类Dev

当 jQuery 过滤器不返回任何内容时显示消息

来自分类Dev

SQL嵌套查询不返回任何内容

来自分类Dev

使用 React 渲染不返回任何内容

来自分类Dev

指定:max_id和/或:until时,twitter不返回任何内容

来自分类Dev

PHP和MYSQL-ORDER BY id有时不返回任何内容

来自分类Dev

使用虚拟属性时,WCF Rest GET不返回任何内容

来自分类Dev

在Rails中,当____不返回任何内容时,如何使用.where('rooms.id不在(?),____)中?

来自分类Dev

使用时间时,SimpleDateFormat解析不返回任何内容

来自分类Dev

使用LINQ,为什么只有一条记录时GroupBy不返回任何行?

来自分类Dev

强制 sqlite 选择查询不返回任何内容而不是 null

来自分类Dev

创建一个完成块,在完成时不返回任何内容但执行另一个函数?

来自分类Dev

PHP的DOM文档loadHTML和getElementByTagName不返回任何内容

来自分类Dev

盐化和哈希函数不返回任何内容

来自分类Dev

查找和grep管道不返回任何内容

来自分类Dev

"which alias" 和 "whereis alias" 不返回任何内容

来自分类Dev

SQL查询-如果查询失败,则必须不返回任何内容

来自分类Dev

WHERE 子句中的 SQL subQuery 不返回任何内容

来自分类Dev

XQuery:声明一个不返回任何内容的函数

来自分类Dev

使用JSoup提取表行数据不返回任何内容

来自分类Dev

如何使用QTestLib测试不返回任何内容的函数

来自分类Dev

无法使用file_get_contents(),不返回任何内容

来自分类Dev

使用Get-ChildItem -Exclude或-Include不返回任何内容

来自分类Dev

使用RSelenium进行Web抓取:findElement不返回任何内容

来自分类Dev

使用uuid查询SQLite不返回任何内容

Related 相关文章

  1. 1

    使用OR WHERE时,Scala Doobie不返回任何内容

  2. 2

    我的Listview在使用改造时不返回任何内容

  3. 3

    使用 SqlParamter 时查询不返回任何内容:实体框架

  4. 4

    WHERE不返回任何内容时,SQL WHERE!=子句不产生任何结果

  5. 5

    过滤器在ng-repeat中不返回任何内容时如何显示消息-AngularJS

  6. 6

    当 jQuery 过滤器不返回任何内容时显示消息

  7. 7

    SQL嵌套查询不返回任何内容

  8. 8

    使用 React 渲染不返回任何内容

  9. 9

    指定:max_id和/或:until时,twitter不返回任何内容

  10. 10

    PHP和MYSQL-ORDER BY id有时不返回任何内容

  11. 11

    使用虚拟属性时,WCF Rest GET不返回任何内容

  12. 12

    在Rails中,当____不返回任何内容时,如何使用.where('rooms.id不在(?),____)中?

  13. 13

    使用时间时,SimpleDateFormat解析不返回任何内容

  14. 14

    使用LINQ,为什么只有一条记录时GroupBy不返回任何行?

  15. 15

    强制 sqlite 选择查询不返回任何内容而不是 null

  16. 16

    创建一个完成块,在完成时不返回任何内容但执行另一个函数?

  17. 17

    PHP的DOM文档loadHTML和getElementByTagName不返回任何内容

  18. 18

    盐化和哈希函数不返回任何内容

  19. 19

    查找和grep管道不返回任何内容

  20. 20

    "which alias" 和 "whereis alias" 不返回任何内容

  21. 21

    SQL查询-如果查询失败,则必须不返回任何内容

  22. 22

    WHERE 子句中的 SQL subQuery 不返回任何内容

  23. 23

    XQuery:声明一个不返回任何内容的函数

  24. 24

    使用JSoup提取表行数据不返回任何内容

  25. 25

    如何使用QTestLib测试不返回任何内容的函数

  26. 26

    无法使用file_get_contents(),不返回任何内容

  27. 27

    使用Get-ChildItem -Exclude或-Include不返回任何内容

  28. 28

    使用RSelenium进行Web抓取:findElement不返回任何内容

  29. 29

    使用uuid查询SQLite不返回任何内容

热门标签

归档