我需要有关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 ... |进行中
答案 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]