在 SQL SERVER 2012 中将 NULL 转换为空白
Posted
技术标签:
【中文标题】在 SQL SERVER 2012 中将 NULL 转换为空白【英文标题】:Converting NULL to Blank in SQL SERVER 2012 【发布时间】:2015-08-04 07:06:46 【问题描述】:我需要一些有关在 SQL SEVER 2012 中动态旋转的指导。我已经能够以我想要的方式成功旋转数据,但是在最终输出中,我看到了 NULL
。
目标
我想确保这些 NULL
值显示为空白。
下面是我在决赛中的样子。
=========================================================
Week Type kawasaki Aston Martin
=========================================================
52 Two Wheel 2 NULL
52 Four Wheel NULL 10
第一次尝试代码
我的主要数据集位于我用于动态旋转过程的#temp 表中。川崎和阿斯顿马丁是“模特”。
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName=ISNULL(@ColumnName + ',','')
+ QUOTENAME(Model)
FROM (SELECT DISTINCT Model FROM #Temp) AS Courses
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT Week,Type,' + @ColumnName + '
FROM (Select Sold,Week,Type,Model from #temp) src
PIVOT(
SUM(ISNULL(Sold),0)
FOR Model IN (' + @ColumnName + ') ) AS PVT'
--Execute the Dynamic Pivot Query
EXECUTE sp_executesql @DynamicPivotQuery;
使用上面的代码,我在我的SUM
聚合中使用ISNULL
进行了第一次天真的尝试,但它不起作用。
我的问题是,如何将NULL
转换为空白?
可选,因为这个问题可能会帮助其他人在我的情况下,如何将NULL
转换为 0(零)?
最终输出示例:
=========================================================
Week Type kawasaki Aston Martin
=========================================================
52 Two Wheel 2 Blank
52 Four Wheel Blank 10
非常感谢您的帮助。
【问题讨论】:
试试REPLACE
或CASE
。
尝试使用COALESCE。 SUM(COALESCE(Sold, 0))
这是一个由报告工具更好地处理的演示问题。输出是否直接交给最终用户?有表示层吗?
【参考方案1】:
SELECT Week, Type, ISNULL(kawasaki , 'blanks')
AS kawasaki , ISNULL([Aston Martin], 'blanks') AS AstonMartin
FROM tablename
【讨论】:
我尝试在 @ColumnName 上工作,这是“模型”,但是我无法让它工作。您的解决方案仅适用于两个模型,但是如果我有 10 个不同的模型,那么它不会是一个好的解决方案。【参考方案2】:如果你想将null转换为0,你有函数
选择 NVL(列,0) 从表中;
【讨论】:
以上是关于在 SQL SERVER 2012 中将 NULL 转换为空白的主要内容,如果未能解决你的问题,请参考以下文章
在SQL Server中将多行相同id的行合并为一行[关闭]
在 SQL Server 中将值分配给类似列后,使用 SSIS 将 Oracle 表列更新为 Null
在 SQL Server 2012 中将两个 nvarchar 列与 Unicode 文本进行比较
在 ASP.Net 中使用 SQL Server 2012 地理数据类型 - DataReader.GetFieldType(x) 返回 null