Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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 Server:Unpivot在列到行上具有空格和特殊字符_Sql_Sql Server_Unpivot - Fatal编程技术网

SQL Server:Unpivot在列到行上具有空格和特殊字符

SQL Server:Unpivot在列到行上具有空格和特殊字符,sql,sql-server,unpivot,Sql,Sql Server,Unpivot,我正在尝试在SQLServer2008中将列解压到行 我希望行值中有空格和特殊字符(从列转置) 一种方法是将EmpName替换为“Employee\u Name”,然后在中选择do aReplace(Title,'.''.'')。但我有很多特别的地方需要解决。有什么办法可以解决这个问题吗 下面的查询无法工作,因为select语句中的选定值与我在Unpivot下使用的名称不同 Select Title, Value from (Select Top 1 E

我正在尝试在SQLServer2008中将列解压到行

我希望行值中有空格和特殊字符(从列转置)

一种方法是将EmpName替换为“Employee\u Name”,然后在中选择do a
Replace(Title,'.''.'')
。但我有很多特别的地方需要解决。有什么办法可以解决这个问题吗

下面的查询无法工作,因为select语句中的选定值与我在Unpivot下使用的名称不同

Select 
    Title, Value 
from 
    (Select Top 1 
         EmpName AS 'Employee Name', EmpSalary AS 'Employee Salary**', Test As 'Test: !'
     From 
         Emp 
     WHERE EmpNo ='1234') p
Unpivot
    (Value For Title In (EmpName, EmpSalary, Test)) As unpvt;

尝试使用交叉应用

SELECT Title, Value
FROM Emp
CROSS APPLY (
  VALUES
    ('Employee Name', EmpName),
    ('Employee Salary**', EmpSalary),
    ('Test: !', Test)
) upiv (Title, Value)
WHERE EmpNo ='1234'
或使用
UNPIVOT

SELECT Title, Value
FROM (
    SELECT [Employee Name] = EmpName, [Employee Salary**] = EmpSalary, [Test: !] = Test
    FROM Emp
    WHERE EmpNo ='1234'
) tbl
UNPIVOT(
    Value FOR 
    Title IN ([Employee Name], [Employee Salary**], [Test: !])
) upiv