存在时不显示值的情况我知道应该为假

时间:2019-02-27 14:57:53

标签: sql tsql ssms

我需要有关THE CASE WHEN EXISTS的信息,无论何时运行,它都能成功完成,但是对于CASE WHEN Exists语句不显示正在进行中的值我知道不等于0的情况。此查询适用于我所使用的其他tsql语句已经写过,但出于任何原因都没有写过。因此返回值,但显示为已完成,这是错误的,因为其中一项设置实际上已设置为1。


declare @STIG varchar(255)
SET @STIG = 'MS SQL Server 2016 Database'
declare @STIG1 varchar(255)
SET @STIG1 = 'MS SQL Server 2016 Instance'
DECLARE @VID2 varchar(20)
set @VID2 = 'V-71'


CREATE TABLE #temp2 ([DatabaseName] varchar(100), [DatabaseOwner] varchar(100), [is_trustworthy_on] varchar(5))

INSERT INTO [#temp2] (DatabaseName, DatabaseOwner, is_trustworthy_on)
SELECT name as DatabaseName,
SUSER_SNAME(owner_sid) AS DatabaseOwner, is_trustworthy_on
FROM sys.databases

SELECT @@servername as [HostName], @VID2 as [V-ID], @STIG AS [STIG], (CASE WHEN EXISTS (
    SELECT is_trustworthy_on
    FROM #temp2
    WHERE #temp2.is_trustworthy_on = 0)
Then CAST('Completed' AS varchar(12))
ELSE CAST ('Ongoing' AS varchar(12)) 
END) as [Status]

drop table #temp2

上面的输出应该是

SERVEREXAMPLE \ Instance | V-71 | MS SQL Server ... |进行中

2 个答案:

答案 0 :(得分:1)

我认为您想要这样的东西:

SELECT      @@servername as [HostName]
,           @VID2 as [V-ID]
,           @STIG AS [STIG]
,           DatabaseName
,           CASE 
                WHEN is_trustworthy_on = 0 
                    THEN 'Completed' 
                ELSE 'Ongoing' 
            END AS Status
FROM        #temp2

答案 1 :(得分:0)

如果需要,请检查is_trustworthy_on = 1

SELECT 
  @@servername as [HostName], 
  @VID2 as [V-ID], 
  @STIG AS [STIG], 
  CASE 
    WHEN EXISTS (
      SELECT 1 FROM #temp2 WHERE is_trustworthy_on = 1
    ) THEN 'Ongoing'
    ELSE 'Completed' 
  END as [Status]