我正在尝试查询SQL Server表以查找具有特定值的所有列。
列名如下 -
TransactionName,
Event1,
Event2,
Event3,
...
Event10
除TransactionName
以外的每一列的值都是0或1.
我需要找到特定TransactionName
的行值为1的所有列。
有什么想法吗?
答案 0 :(得分:1)
一种方法是取消隐藏
select id, col
from tbl t
cross apply (
values
('Event1', Event1)
-- ...
) c(col,val)
where val = 1
and transactionname = 'foo'
答案 1 :(得分:0)
SELECT *
FROM YOUR_TABLE
WHERE EVENT1 * EVENT2 * EVENT3 * EVENT4 * EVENT5 * EVENT6 *
EVENT7 * EVENT8 * EVENT9 * EVENT10 = 1
答案 2 :(得分:0)
试试这个 我认为除了TransactionName之外,所有其他列都是数字类型
DECLARE @COLUMN_NAME VARCHAR(128),
@sql NVARCHAR(max)
DECLARE cur CURSOR FOR
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<tablename>'
AND COLUMN_NAME != 'TransactionName'
OPEN cur
FETCH NEXT FROM cur INTO @COLUMN_NAME
SET @sql = 'select * from <tablename> where '
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql+= @COLUMN_NAME + '= 1 or '
FETCH NEXT FROM cur INTO @COLUMN_NAME
END
CLOSE cur
DEALLOCATE cur
SELECT @sql = LEFT (@sql, Len(@sql) - 2)
EXEC Sp_executesql
@sql