sql - 旋转数字列和字符串非数字列
问题描述
我有一个特定的要求来旋转两列,一个数字和一个字符串。我精通 SQL Pivot,但是,无法为此找到解决方案。
我的原始数据如下:
Country | Segment | Year | Parameter_Name | Parameter_Value_Numeric | Parameter_Value_String
USA | 1 | 2003 | Datapoint1 | 100 | null
USA | 1 | 2003 | Datapoint2 | 148 | null
USA | 1 | 2003 | Datapoint3 | null | Upper values(s)
USA | 2 | 2003 | Datapoint1 | 121 | null
USA | 2 | 2003 | Datapoint2 | 180 | null
USA | 2 | 2003 | Datapoint3 | null | Medium values(s)
我想要的结果是这样的:
Country | Segment | Year | Datapoint1 | Datapoint2 | Datapoint3
USA | 1 | 2003 | 100 | 148 | Upper values(s)
USA | 2 | 2003 | 121 | 180 | Medium values(s)
面临的问题是 Datapoint1 和 Datapoint2 是float
,而 Datapoint3 是nvarchar
. 因此,pivot 只能使用其中之一。
解决方案
您可以尝试以下逻辑-
SELECT Country,Segment,Year,
MAX(CASE WHEN Parameter_Name = 'Datapoint1' THEN Parameter_Value_Numeric END) Datapoint1,
MAX(CASE WHEN Parameter_Name = 'Datapoint2' THEN Parameter_Value_Numeric END) Datapoint2,
MAX(CASE WHEN Parameter_Name = 'Datapoint3' THEN Parameter_Value_String END) Datapoint3
FROM your_table
GROUP BY Country,Segment,Year
推荐阅读
- python - 错误 Django cms 返回 TypeError: issubclass() arg 1 must be a class
- azure-bot-service - 使用 On Premise 数据库的 Azure 机器人服务
- java - Webview 未显示所需的结果
- ssis - ssis 2010 动态变量文件名
- c - 给定一个整数数组,其中每个元素成对(彼此相邻)出现一个整数,如何找到这个整数?
- javascript - 单击按钮时,将选定的行值打开到新窗口 Jquery javascript
- vidyo - Vidyo : 在视频通话期间看到手机黑屏
- python - 在 Python 3.8 上安装 Matplotlib 时出错
- swift - Xcode 10,Anyobject 类型的值没有成员
- microsoft-graph-api - OneNote API:从 Section 中获取 Pages 列表,过滤掉已删除的页面