首页 > 解决方案 > 获取对应行中具有变量的列的名称

问题描述

我有一个查询,其中的列从供应Jan-14Dec-18ID突出显示的行及其在相关时间段的相应支出。我正在尝试创建一个案例语句,当它不等于 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

提前非常感谢!

我还提供了数据的屏幕截图和我希望以黄色创建的列。

在此处输入图像描述

标签: sqlhivecase

解决方案


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

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

请注意,您对数据的表示很差。每个供应商每个月都应该有一行。如果你有这样的数据模型,查询会简单得多。


推荐阅读