查询SQL表以查找具有特定值的所有列

时间:2014-10-16 06:22:09

标签: sql sql-server

我正在尝试查询SQL Server表以查找具有特定值的所有列。

列名如下 -

TransactionName,
Event1,
Event2,
Event3,
...
Event10

TransactionName以外的每一列的值都是0或1.

我需要找到特定TransactionName的行值为1的所有列。

有什么想法吗?

3 个答案:

答案 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