我有一张桌子,里面有大约50个tinyint列(充当布尔值)。这些选项可以是true(1)或false(0)。
我需要能够只选择真实的列(值= 1),我需要获取这些列的名称。我不知道怎么写。
任何人都可以提供解决方案吗?
提前致谢:)
答案 0 :(得分:2)
您正在寻找UNPIVOT
解决方案。 Oracle和SQL Server支持UNPIVOT
,但我怀疑您没有使用这些数据库。因此,手动硬编码:
SELECT id, 'col1' AS col
WHERE col1 = 1
UNION ALL
SELECT id, 'col2' AS col
WHERE col2 = 1
...
UNION ALL
SELECT id, 'col50' AS col
WHERE col50 = 1
我在那里放了一个假设的id
列,以防你的表包含多行。如果它只包含一行,则可能不需要id
列。