sql - 非透视场景sql中的case语句
问题描述
我正在尝试取消旋转查询集,如下所示
Member ID N1code N2code N3code Name
1234 234 567 878 ted
23344 4242 23232 Mike
我想要某种类型的案例陈述,以帮助在取消透视后显示类型
MemberID Codes Name Type
1234 234 ted N1
1234 567 ted N2
1234 878 ted N3
23344 4242 Mike N1
23344 23232 Mike N2
解决方案
在 SQL Server 中,它只是一个简单的UNPIVOT
. 不需要该CASE
语句,因为原始列名在UNPIVOT
. 我们能够从原始列名中提取左侧 2 个字符。如果您希望它不是列名的派生词,则必须使用CASE
.
查看最外面的选择以查看这些选定列的来源。
SELECT unpiv.MemberID, unpiv.Name, unpiv.theCode, left(codes,2) AS theType
FROM
(
SELECT MemberID, Name, N1Code, N2Code, N3Code
FROM t1
) AS src
UNPIVOT
(
theCode FOR codes IN (N1Code, N2Code, N3Code)
) AS unpiv;
对于 MySQL 5.x 及更低版本,您可以使用 aCROSS JOIN
和几个CASE
语句。
SELECT t1.MemberID, t1.Name
, CASE cj.colName
WHEN 'N1Code' then t1.N1Code
WHEN 'N2Code' then t1.N2Code
WHEN 'N3Code' then t1.N3Code
END AS theCode
, CASE cj.colName
WHEN 'N1Code' then 'N1'
WHEN 'N2Code' then 'N2'
WHEN 'N3Code' then 'N3'
END AS theType
FROM t1
CROSS JOIN
(
SELECT 'N1Code' AS colName
UNION ALL
SELECT 'N2Code'
UNION ALL
SELECT 'N3Code'
) cj
推荐阅读
- unity3d - Facebook 登录 - 在 android 上恢复“用户取消登录”
- android - 任务“:prepareDebugDependencies”执行失败
- html - 在角度 6 中动态更改复选框的工具提示文本
- image - MS Access 根据报表中的组合框选择显示图像
- google-apps-script - 如何在只读电子表格中运行 Google Apps 脚本?
- javascript - CSS - 由三角形组成的边框
- opengl - TextureArray 与 image2D/Computeshader
- c# - 多个线程同时更新 AZURE 表中同一行的不同列
- zend-framework - SocialEngine:getDbTable() 与 getItemTable()
- java - 为 Kafka Connect 创建 CSV 连接器