Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 根据条件设置变量_Sql_Tsql - Fatal编程技术网

Sql 根据条件设置变量

Sql 根据条件设置变量,sql,tsql,Sql,Tsql,我有一个带有case子句的简单变量赋值,如: DECLARE @CurrentType INT SELECT @CurrentType = (CASE WHEN [CL].[ProjectKey] IS NOT NULL THEN 0 ELSE 1 END) FROM [Project] AS [P]

我有一个带有case子句的简单变量赋值,如:

DECLARE @CurrentType INT

SELECT
     @CurrentType = (CASE
                     WHEN [CL].[ProjectKey] IS NOT NULL
                     THEN 0
                     ELSE 1
                  END)
     FROM [Project] AS [P]
         LEFT JOIN [CallLog] AS [CL] ON [P].[ProjectKey] = [CL].[ProjectKey]


SELECT
     @CurrentType
但它总是返回NULL,而不是1或0

我还尝试使用
IIF
conditional-like:

DECLARE @CurrentType INT = (SELECT 
                            IIF([CL].[ProjectKey] IS NOT NULL , 1 , 0)
                            FROM [Project] AS [P]
                                LEFT JOIN [CallLog] AS [CL] ON [P].[ProjectKey] = [CL].[ProjectKey] )

                                SELECT
                 @CurrentType
但同样的历史,我怎样才能得到渴望的结果呢?哪一个是1还是0?关于此表达式:

SELECT @CurrentType = (CASE WHEN [CL].[ProjectKey] IS NOT NULL THEN 0 ELSE 1 END)
FROM [Project] [P] LEFT JOIN
     [CallLog] [CL]
      ON [P].[ProjectKey] = [CL].[ProjectKey];
如果查询未返回任何行,则只能将
@CurrentType
设置为
NULL
。假设您使用的是
左联接
,这意味着
项目
为空

如果将其更改为聚合查询,还将获得一行,因此这可能会满足您的需要:

SELECT @CurrentType = (CASE WHEN MAX([CL].[ProjectKey]) IS NOT NULL THEN 0 ELSE 1 END)
FROM [Project] [P] LEFT JOIN
     [CallLog] [CL]
      ON [P].[ProjectKey] = [CL].[ProjectKey];

我尝试过,但仍然得到空值,但你给了我一个想法,我做到了
(当计数(1)>为0时,则为0,否则为1结束)
,它可以工作!谢谢,注意:我不知道这是否是一个解决办法,但在我的工作case@Leon . . . 我的意思是类似的,但是我把
MAX()
放错了位置。看看ISNULL函数……它会给你一个默认值,而不是null。