sql - PIVOT 运算符的列列表中不允许有前缀列
问题描述
我有这个查询:
SELECT
COUNT(DISTINCT DIAL) as CALL_SUMMARY,APP,DEST_URI
FROM
test.dbs
PIVOT (COUNT(DIAL) FOR APP IN(phone, mobile)) as log_status_new
WHERE
ID_DATE >= '2019-07-08 16:41:42'
AND ID_DATE < '2020-07-08 16:41:42'
GROUP BY APP,DEST_URI ;
但它返回此错误:
SQL 错误 [254] [S0001]: PIVOT 运算符的列列表中不允许有前缀列
样本数据:
+----------+----------+----------+
| DIAL | APP | DEST_URI |
+----------+----------+----------+
| 5656 | phone | 1 |
| 5657 | phone | 2 |
| 5456 | mobile | 6 |
| 5898 | mobile | 9 |
| 5656 | phone | 4 |
+----------+----------+----------+
到:
+----------+--------+--------+------------+
| DIAL | PHONE | MOBILE | DEST_URI |
+----------+--------+--------+------------+
| 5656 | 1 | | 1 |
| 5657 | 1 | | 2 |
| 5456 | | 1 | 6 |
| 5898 | | 1 | 9 |
| 5656 | 1 | | 4 |
+----------+--------+--------+------------+
解决方案
你所拥有的不是PIVOT
. 你只需要几个CASE
表达式:
SELECT DIAL,
CASE APP WHEN 'phone' THEN 1 END AS PHONE,
CASE APP WHEN 'mobile' THEN 1 END AS MOBILE,
DEST_URI
FROM dbo.YourTable;
推荐阅读
- header - DITA 页眉和页脚未按定义显示
- javascript - 使用 ReactJs 的组件未在移动设备中拖动(使用 onTouch、onDrag、onMouse 的事件)
- java - 验证来自 OneLogin 的 SAML 响应中的签名
- android - 在android中以编程方式声明时,微光在卡片视图中显示黑色边缘
- vodapay-miniprogram - 您可以从 VodaPay 小程序的当前页面访问数据对象吗?
- java - JPQL/ Hibernate 对二级子数据进行排序和过滤
- rust - 如何清除或删除 Rust 中的 io::stdin 缓冲区?
- youtube - YouTube 数据 API V3 中的配额问题
- pyspark - 如何实际限制或削减 PySpark DataFrame
- c++ - 尝试模块化一些标准头文件c ++时出现编译错误