获取相应行中带有变量的列的名称

时间:2018-09-11 20:32:07

标签: sql hive case

我有一个查询,该查询的列从Jan-14Dec-18,各行用SupplierID及其相关时间段的相应支出突出显示。我正在尝试创建一个案例声明,当不等于0时会告诉我第一个月的支出。我提供了一个示例,说明了我所拥有的东西以及所要实现的东西,如下所示:

有人可以帮忙吗?

Supplier ID Jan-14 Feb-14 Mar-14 Apr-14....Dec-18 FirstMonthSpend

00001         0      0     $10      0        0         Mar-14

00002         0     $10      0      0        0         Feb-14

非常感谢!

我还提供了我希望用黄色创建的数据的屏幕快照和列。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用一个巨大的case表达式:

select supplierId,
       (case when "Jan-14" > 0 then 'Jan-14'
             when "Feb-14" > 0 then 'Feb-14'
             . . .
        end) as first_month
from t;

请注意,数据表示不佳。每个供应商每月应​​有一行。如果您有这样的数据模型,则查询会简单得多。