CREATE TABLE #tempi ( nav1 VARCHAR(50), nav2 INT, nav3 INT, nav4 INT, nav5 INT )
INSERT INTO #tempi VALUES('Grand Total:', 0.0, 1.0, 2.0, 3.0)
DECLARE @dynsql NVARCHAR(MAX)
SELECT @dynsql = ISNULL(@dynsql + ',','') + QUOTENAME(col) FROM #tempi
UNPIVOT(nav FOR col IN (nav2,nav3,nav4,nav5)) AS unpvt
WHERE nav1 = 'Grand Total:' AND nav>0
IF(@@ROWCOUNT > 0)
BEGIN
SET @dynsql = 'SELECT ' + @dynsql + ' FROM #tempi'
EXEC(@dynsql)
END
DROP TABLE #tempi
Или, если вы не можете использовать UNPIVOT
...
DECLARE @dynsql NVARCHAR(MAX)
SELECT @dynsql = CASE WHEN nav2>0 THEN ',nav2' ELSE '' END +
CASE WHEN nav3>0 THEN ',nav3' ELSE '' END +
CASE WHEN nav4>0 THEN ',nav4' ELSE '' END +
CASE WHEN nav5>0 THEN ',nav5' ELSE '' END
FROM #tempi
WHERE nav1 = 'Grand Total:'
IF(LEN(@dynsql) > 0)
BEGIN
SET @dynsql = STUFF(@dynsql,1,1,'SELECT ') + ' FROM #tempi'
EXEC(@dynsql)
END