sql - UNPIVOT 没有得到 NULL 值
问题描述
我有以下内容:
SELECT Custid, Shipperid, Freight
FROM Sales.FreightTotals
UNPIVOT( Freight FOR Shipperid IN([1],[2],[3]) ) AS U;
我有以下结果:
custid shipperid freight
1 1 25
1 3 100
2 2 75
获得 NULL 值后我的预期输出:
custid shipperid freight
1 1 25
1 2 NULL
1 3 100
2 1 NULL
2 2 75
2 3 NULL
解决方案
例如,使用 CTE 将 NULL 设为 0.00,然后使用 NULLIF() 将 0.00 替换为 NULL:
WITH C AS
(
SELECT custid,
ISNULL([1], 0.00) AS [1],
ISNULL([2], 0.00) AS [2],
ISNULL([3], 0.00) AS [3]
FROM Sales.FreightTotals
)
SELECT custid, shipperid, NULLIF(freight, 0.00) AS freight
FROM C
UNPIVOT( freight FOR shipperid IN([1],[2],[3]) ) AS U;
推荐阅读
- javascript - 有什么方法可以同时从一个元素中添加和删除一个类
- c# - 如何合并`列表
` 并删除所有键的名称/类对的重复项 - python - 与 Oracle 数据库的 Python 连接:cx_Oracle
- python-3.x - 微调 res10_300x300_ssd_iter_140000.caffemodel
- wordpress - Symfony 4 Event Dispatcher - 是否有一些解决方案如何使用 Event Dispatcher 过滤值?(如 wordpress “add_filter” 功能)
- javascript - 合并 2 个 onclick 动作 (Javascript) 并用一个按钮触发它们
- gps - LoRaWan - 可以追踪运动员吗?
- java - Xalan-J:在扩展函数中解析 QName 文本值的命名空间
- javascript - 反应 {...props} 副作用
- laravel - Laravel PostgreSQL:SELECT DISTINCT ON 表达式必须匹配初始 ORDER BY 表达式