简体   繁体   English

如果SQL查询在SQL中返回零值,如何将结果返回为NULL

[英]how to return result as NULL if the SQL query return zero values in SQL

I have an sql query where I want to return the value as "NULL" if there is no result set after the query execution. 我有一个SQL查询,如果查询执行后没有结果集,我想在其中返回“ NULL”值。 I Have tried ISNULL property but, its generating an error, 我尝试过ISNULL属性,但是它会产生错误,

在此处输入图片说明

my query is : 我的查询是:

SELECT ISNULL((SELECT TOP (100) PERCENT a.ReportDate, a.Scripcode, a.ISIN, a.Scripname, a.AccountNo, a.ClientLongName, a.GroupName, a.Event, a.TradedQty, a.UnreconQty, a.ExDateQty, a.RecDateQty, a.Diff, a.Rate, a.Ratio, a.TotalValue, a.Shares, a.StartDate, a.ExDate, a.RecordDate, a.PayDate, a.AgmDate, a.NSecName, a.NSecNo, a.Remark, b.GRUL_PROX_GRP_ID, b.GRUL_GROUPNO, b.CUSTOMERNO, b.GRUL_SHORTNAME, b.GRUP_SHORTCODE, b.CONF_TYP, b.SWIFT, b.FAX, b.COURIER, b.EMAIL, b.Account_Group, b.Excel_Word, b.Password, b.Sub_Account_Flag 
FROM       dbo.CRS_Entitlement_MasterDate AS a 
INNER JOIN dbo.CRS_Entitlement_EntitlementComn AS b 
ON         a.AccountNo = b.CUSTOMERNO
WHERE      (b.Account_Group = 'A') 
AND        (b.Excel_Word = 'E') 
AND        (b.SWIFT <> 'v') 
AND        (b.CONF_TYP <> 'N/A') 
AND        (b.FAX = 'v') 
OR         (b.Account_Group = 'A') 
AND        (b.Excel_Word = 'E') 
AND        (b.SWIFT <> 'v') 
AND        (b.CONF_TYP <> 'N/A') 
AND        (b.COURIER = 'v') 
OR         (b.Account_Group = 'A') 
AND        (b.Excel_Word = 'E') 
AND        (b.SWIFT <> 'v') 
AND        (b.CONF_TYP <> 'N/A') 
AND        (b.EMAIL = 'v')
ORDER BY   a.AccountNo), 0) AS Expr1

please help me to solve this ,Thanks in Advance!!! 请帮助我解决这个问题,谢谢!!!

Use EXISTS like so: 像这样使用EXISTS

-- returns NULL when it doesn't exist
SELECT  CASE WHEN EXISTS ( SELECT   1 AS val
                           WHERE    1 = 2 ) THEN 1
             ELSE NULL
        END RESULT;

-- returns something else, in this case 1 when it does exist    
SELECT  CASE WHEN EXISTS ( SELECT   1 AS val
                           WHERE    1 = 1 ) THEN 1
             ELSE NULL
        END RESULT;

EXISTS (Transact-SQL) 存在(Transact-SQL)

Specifies a subquery to test for the existence of rows. 指定一个子查询以测试是否存在行。

A sample with data: 带有数据的样本:

CREATE TABLE #test ( id INT );

INSERT  INTO #test
        ( id )
VALUES  ( 1 ),
        ( 2 ),
        ( 3 );

-- returns data
IF ( EXISTS ( SELECT    *
              FROM      #test
              WHERE     id > 0 ) )
    SELECT  *
    FROM    #test
    WHERE   id > 0;
ELSE
    SELECT  NULL;

 -- returns NULL 
 IF ( EXISTS ( SELECT    *
              FROM      #test
              WHERE     id > 5 ) )
    SELECT  *
    FROM    #test
    WHERE   id > 5;
ELSE
    SELECT  NULL AS Result;


DROP TABLE #test;     

您不能在内部查询中放置多个列。例如,选择top(100)%a.ReportDate ----将起作用

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM