SQL Server:根据记录的值返回列名
发布时间:2021-02-26 09:27:21 所属栏目:编程 来源:网络整理
导读:基于以下示例表,我但愿有人对以下内容提供快速提议/办理方案: |Field1 |Field2 |Field3 |Field4 ||-------|-------|-------|-------|| 1 | 0 | 0 | 1 | 我但愿可以或许构建一个查询来返回列名,其值(基于单个记录)= 1.这样,不依靠于游标或姑且表. 即我想要以下输
基于以下示例表,我但愿有人对以下内容提供快速提议/办理方案: |Field1 |Field2 |Field3 |Field4 | |-------|-------|-------|-------| | 1 | 0 | 0 | 1 | 我但愿可以或许构建一个查询来返回列名,其值(基于单个记录)= 1.这样,不依靠于游标或姑且表. 即我想要以下输出: Field1 Field4 我一向在实行对sys.columns(和sys.tables)举办各类毗连,但到今朝为止还没什么用. 办理要领您也可以行使Cross applySELECT Cname FROM Tablename CROSS apply (VALUES('Field1',Field1),('Field2',Field2),('Field3',Field3),('Field4',Field4)) ca (cname,data) WHERE data = 1 要动态行使它. CREATE TABLE test ( Field1 INT,Field2 INT,Field3 INT,Field4 INT ) INSERT INTO test VALUES ( 1,1 ) DECLARE @collist VARCHAR(max)='',@sql NVARCHAR(max) SELECT @collist += '(''' + COLUMN_NAME + ''',' + COLUMN_NAME + '),' FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME = 'test' AND COLUMN_NAME LIKE 'Field%' AND TABLE_SCHEMA = 'dbo' SELECT @collist = LEFT(@collist,Len(@collist) - 1) SET @sql =' SELECT Cname FROM test CROSS apply (VALUES' + @collist + ') ca (cname,data) WHERE data = 1 ' EXEC Sp_executesql @sql (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |