我正在尝试返回值计数为1的数据列的列标题。
我在下面附加了一些示例数据,并希望我的查询返回列标题,例如“ FinalCompare ”,而不是“ BeginCompare ”
我应该指出,在我的实际数据集中,我试图返回的不止一列。 (即会有更多“最终比较”列)
IFinal | UFinal | FinalCompare | IBegin | UBegin | BeginCompare |
NULL | NULL | Y | NULL | 0 | N |
NULL | NULL | Y | NULL | NULL | Y |
NULL | NULL | Y | NULL | NULL | Y |
NULL | NULL | Y | NULL | 1 | N |
NULL | NULL | Y | NULL | NULL | Y |
NULL | NULL | Y | NULL | NULL | Y |
NULL | NULL | Y | NULL | NULL | Y |
这是在SQL中执行此操作的简单方法吗?
答案 0 :(得分:0)
有一种方法,但是您必须列出每一列。像这样:
select ( (case when min(FinalCompare) = max(FinalCompare) then 'FinalCompare;' else '' end) ||
(case when min(BeginCompare) = max(BeginCompare) then 'BeginCompare;' else '' end)
) as columns_with_one_value
from t;
您需要将每一列列为单独的case
表达式。请注意,这是对min()
和max()
的比较,因为它们通常比count(distinct)
便宜。