Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中的unpivot中执行空检查_Sql_Sql Server_Sql Tuning - Fatal编程技术网

如何在sql中的unpivot中执行空检查

如何在sql中的unpivot中执行空检查,sql,sql-server,sql-tuning,Sql,Sql Server,Sql Tuning,我在sql server上使用以下sql查询 select distinct [Value],Label,Id from( select distinct [Name], Code, I as Id,I + ':' + [Value] as label, [Value] from [test].[dbo].[emp] unpivot ( [Value] for I in (product, model) ) as dataTable) as t 我想要的是,如果unpivot语句中的

我在sql server上使用以下sql查询

select distinct  [Value],Label,Id from(
select distinct [Name], Code, I as Id,I + ':' + [Value] as label, [Value]
from [test].[dbo].[emp]
unpivot
(
  [Value]
  for I in (product, model)
) as dataTable) as t
我想要的是,如果unpivot语句中的任何[Value]为null,它应该向嵌套的select语句返回“unknown”

我如何做到这一点

更新-

//this is wrong sql. Just want to show what is required
select distinct  [Value],Label,Id from(
select distinct [Name], Code, coalesce(I as Id,'unknown'),coalesce(I,'unknown') + ':' + [Value] as label, coalesce([Value],'unknown')
from [test].[dbo].[emp]
unpivot
(
  [Value]
  for I in (product, model)
) as dataTable) as t

您似乎在寻找联合:

我建议将问题写为:

我不确定您真正想要什么,但我建议使用apply编写查询


这似乎简单得多,而且性能可能也更好。

样本数据和期望的结果会有所帮助。
from (select distinct [Name], Code, I as Id,
             I + ':' + coalesce([Value], 'unknown') as label,
            [Value]
      from [test].[dbo].[emp]
     ) e
select distinct v.id, (v.id + ':' + coalesce(v.[Value], 'unknown')) as label,
       coalesce(v.[Value], 'unknown') as value
from [test].[dbo].[emp] e cross apply
     (values (e.product, 'product'), (e.model, 'model')
     ) v(value, id);