根据状态 0 或 1 显示列名
Display column name based on status 0 or 1
我不明白如何实现基于状态的列名,我认为不可能显示多个相同的列名但我有这个要求显示列名 'Success' 或 'Fail' 并且永远不会获取两种状态,我必须一次 select 一个 0 或 1,具体取决于条件,值在变量中定义。
CREATE TABLE #sqlJobHistory(jobId INT, jobStatus INT)
INSERT INTO #sqlJobHistory VALUES
(1, 0),
(2, 0),
(3, 1),
(4, 1),
(5, 1),
(6, 0),
(7, 1)
我想根据状态显示我的第二列名称,到目前为止我尝试了注释行但是:(
SELECT MAX(jobId) maxJobId,
COUNT(*) AS 'Failure' --AS CASE WHEN jobStatus = 0 THEN 'Fail' ELSE 'Success' END
FROM #sqlJobHistory
WHERE jobStatus = 0
GROUP BY jobStatus
如果可能的话,你能否帮助他实现所需输出的正确方法是什么?如果不可能,那么非常抱歉浪费了你宝贵的时间。
是的,可以通过动态查询实现,如果我理解正确的话,你的第二列名称是'Success' if Status = 1 else 'Fail'
DECLARE @status INT, @sql VARCHAR(500)
SET @status = 1 --It can be 0 or 1 and I think you already have this variable
SET @sql ='
SELECT MAX(jobId) maxJobId,
COUNT(*) AS ' +
CASE WHEN CAST(@status AS VARCHAR)= 0 THEN 'Failure' ELSE 'Success' END + '
FROM #sqlJobHistory
WHERE jobStatus = ''' + CAST(@status AS VARCHAR) + '''
GROUP BY jobStatus'
EXEC(@sql)
我不明白如何实现基于状态的列名,我认为不可能显示多个相同的列名但我有这个要求显示列名 'Success' 或 'Fail' 并且永远不会获取两种状态,我必须一次 select 一个 0 或 1,具体取决于条件,值在变量中定义。
CREATE TABLE #sqlJobHistory(jobId INT, jobStatus INT)
INSERT INTO #sqlJobHistory VALUES
(1, 0),
(2, 0),
(3, 1),
(4, 1),
(5, 1),
(6, 0),
(7, 1)
我想根据状态显示我的第二列名称,到目前为止我尝试了注释行但是:(
SELECT MAX(jobId) maxJobId,
COUNT(*) AS 'Failure' --AS CASE WHEN jobStatus = 0 THEN 'Fail' ELSE 'Success' END
FROM #sqlJobHistory
WHERE jobStatus = 0
GROUP BY jobStatus
如果可能的话,你能否帮助他实现所需输出的正确方法是什么?如果不可能,那么非常抱歉浪费了你宝贵的时间。
是的,可以通过动态查询实现,如果我理解正确的话,你的第二列名称是'Success' if Status = 1 else 'Fail'
DECLARE @status INT, @sql VARCHAR(500)
SET @status = 1 --It can be 0 or 1 and I think you already have this variable
SET @sql ='
SELECT MAX(jobId) maxJobId,
COUNT(*) AS ' +
CASE WHEN CAST(@status AS VARCHAR)= 0 THEN 'Failure' ELSE 'Success' END + '
FROM #sqlJobHistory
WHERE jobStatus = ''' + CAST(@status AS VARCHAR) + '''
GROUP BY jobStatus'
EXEC(@sql)