[英]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.