sql - 获取对应行中具有变量的列的名称
问题描述
我有一个查询,其中的列从供应Jan-14
商Dec-18
ID突出显示的行及其在相关时间段的相应支出。我正在尝试创建一个案例语句,当它不等于 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
提前非常感谢!
我还提供了数据的屏幕截图和我希望以黄色创建的列。
解决方案
您可以使用一个巨大的case
表达式:
select supplierId,
(case when "Jan-14" > 0 then 'Jan-14'
when "Feb-14" > 0 then 'Feb-14'
. . .
end) as first_month
from t;
请注意,您对数据的表示很差。每个供应商每个月都应该有一行。如果你有这样的数据模型,查询会简单得多。
推荐阅读
- mysql - FIND_IN_SET woth trim function for values
- python - 转置字段 csv、Python(Numpy 或 Pandas)
- arrays - Update an element of an Array in a Document in MongoDB with Mongoose
- c - 读取文本文件并在链表中保存数据
- android - Kotlin 扩展函数来拆分大类
- android - 如何在 android studio 中将 On Click Listener 设置为菜单项
- hibernate - Hibernate 5.3.2 中是否弃用了位置参数?
- objective-c - stringEncodingForData:encodingOptions:convertedString:usedLossyConversion: 能否返回 NSUTF16StringEncoding 或 NSUTF32StringEncoding?
- azure - Container Insights - Containerstats 仪表板
- javascript - Bootstrap4 Navbar 不适用于移动设备中的“jQuery.BgSwitcher”