我甚至不确定从哪里开始SELECT查询本身,但是假设我有一个表:
ID Environment Position1 Position2 Position3
1 Operations Tech Survey Phone
2 Warehouse Stocker Maintenance Trucker
3 Office Logger Janitor当我搜索特定的职位名称时,我如何执行SELECT查询来给出列名,但我需要知道它在哪一列下?
示例:
SELECT columnname
FROM table
WHERE Position1 = 'Janitor' OR Position2 = 'Janitor' OR Position3 = 'Janitor'我不知道是否有更好的方法来做到这一点,但想法是为每个用户分配Position1-3和一个环境。如果它们被移动到另一个环境,它们将保留Position#,但其标签会更改。
这些数据是假的,而且老实说更令人困惑,因为我不想泄露真实的数据。有可能我的桌子设置得不好。
发布于 2019-08-01 07:14:17
使用CASE表达式。
SELECT CASE 'Janitor'
WHEN Position1 THEN 'Position1'
WHEN Position2 THEN 'Position2'
ELSE 'Position3'
END AS columnname
FROM table
WHERE 'Janitor' IN (Position1, Position2, Position3)但是最好使用下面这样的表来规范化您的数据。table1_id是原始表的外键。
table1_id PositionNum Position
1 1 Tech
1 2 Survey
1 3 Phone
2 1 Stocker
2 2 Maintenance
2 3 Trucker
3 1 Logger
3 2 Janitor
SELECT PositionNum
FROM thisTable
WHERE Position = 'Janitor'发布于 2019-08-01 07:19:08
试试这个:
Select
ID,
Environment,
(
Case
When Position1 = N'Janitor' Then N'Position1'
When Position2 = N'Janitor' Then N'Position2'
When Position3 = N'Janitor' Then N'Position3'
When Position4 = N'Janitor' Then N'Position4'
Else N'none'
End
) As ColumnName
From Table
WHERE Position1 = N'Janitor' Or Position2 = N'Janitor' Or Position3 = N'Janitor' Or Position4 = N'Janitor'https://stackoverflow.com/questions/57299721
复制相似问题