如何使用sqlserver在列中使用pivot多个值? [英] how to use pivot multiple values in a column using sqlserver?

查看:418
本文介绍了如何使用sqlserver在列中使用pivot多个值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有员工表它包含4列Emp_Id,Emp_Name,Allowance_Names和Allowance值,



我需要一个像这样出来



 Emp_Id Emp_Name Allowance_Name1 Allowance_Name2 ..... 
- --- -------- --------------- ------- --------
101 AAA允许值允许值....





有谁知道请帮我做..

解决方案

这里 [ ^ ]你会找到大量的例子。


通过示例查询检查我的文章中的Pivot详细信息

我为你做了样品。



   -   创建表 
创建 EmpDetails

Emp_Id int
Emp_Name varchar 40 ),
Allowance_Names varchar 40 ),
Allowance_Values varchar 40 ),

- 示例数据插入
插入 EmpDetails 1 ' Emp1'' AllowNames1'' Values1'
插入 EmpDetails 1 ' Emp1' AllowNames2'' Values2'
插入 EmpDetails 1 ' Emp1'' AllowNames3'' Values3'
插入 进入 EmpDetails 1 ,< span class =code-string>' Emp1'' AllowNames4'' Values4'
< span class =code-keyword>将 插入 EmpDetails 2 ' Emp2'' AllowNames1'' Values2_1'
插入 EmpDetails 2 ' Emp2'' AllowNames2'' Values2_2'
插入 into EmpDetails 2 ' Emp2'' AllowNames3'' Values2_3'
插入 EmpDetails 2 ' Emp2'' AllowNames4'' Values2_4'


- 数据透视表选择查询
DECLARE @ MyColumns AS NVARCHAR (MAX),
@ SQLquery < span class =code-keyword> AS NVARCHAR (MAX)
- 首先我们得到所有应该在我们的necxt数据透视查询中使用它的列中显示的ItemName
select @ MyColumns = STUFF(( SELECT ' ,' + QUOTENAME(Allowance_Names)
FROM EmpDetails
GROUP BY Allowance_Names
ORDER < span class =code-keyword> BY Allowance_Names
FOR XML PATH(' '), TYPE
).value(' 。'' NVARCHAR (MAX)'
1 1
set @ SQLquery = N ' SELECT Emp_Id,Emp_Name,' + @ MyColumns + N ' from

SELECT
Emp_Id,
Emp_Name,
Allowance_Values as values2
,Allowance_Names
FROM EmpDetails
)x
pivot

max(values2)
for Allowance_Names in('
+ @ MyColumns + N '
)p'

exec sp_executesql @ SQLquery ;



了解更多详情请查看我的文章。

初学者的基本SQL查询 [< a href =http://www.codeproject.com/Articles/818756/Basic-SQL-Queries-for-Beginners#13target =_ blanktitle =New Window> ^ ]


Hi,
I have Employee table it contains 4 columns Emp_Id,Emp_Name,Allowance_Names,And Allowance values,

I need an out put like this

Emp_Id  Emp_Name Allowance_Name1  Allowance_Name2.....   
-----   -------- ---------------  ---------------
   101   AAA     Allowancevalues    Allowancevalues....



Can anyone know please help me to do it..

解决方案

Here[^] you'll find a tons of examples.


Check my article for Pivot details with example query
I have made sample for you.

-- Create Table
Create Table EmpDetails
(
Emp_Id  int,
Emp_Name varchar(40),
Allowance_Names varchar(40),
Allowance_Values varchar(40),
)
--Sample data Insert
Insert into EmpDetails Values(1,'Emp1',     'AllowNames1',         'Values1')
Insert into EmpDetails Values(1,'Emp1',     'AllowNames2',         'Values2')
Insert into EmpDetails Values(1,'Emp1',     'AllowNames3',         'Values3')
Insert into EmpDetails Values(1,'Emp1',     'AllowNames4',         'Values4')
Insert into EmpDetails Values(2,'Emp2',     'AllowNames1',         'Values2_1')
Insert into EmpDetails Values(2,'Emp2',     'AllowNames2',         'Values2_2')
Insert into EmpDetails Values(2,'Emp2',     'AllowNames3',         'Values2_3')
Insert into EmpDetails Values(2,'Emp2',     'AllowNames4',         'Values2_4')


-- Pivot Select Query
DECLARE @MyColumns AS NVARCHAR(MAX),
    @SQLquery  AS NVARCHAR(MAX)
-- here first we get all the ItemName which should be display in Columns we use this in our necxt pivot query
select @MyColumns = STUFF((SELECT ',' + QUOTENAME(Allowance_Names) 
                    FROM EmpDetails
                    GROUP BY Allowance_Names
                    ORDER BY Allowance_Names
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')
set @SQLquery = N'SELECT Emp_Id,Emp_Name,' + @MyColumns + N' from 
             (
               SELECT 
                Emp_Id,
				Emp_Name, 
				Allowance_Values as values2 
				,Allowance_Names
    FROM EmpDetails
            ) x
            pivot 
            (
                 max(values2)
                for Allowance_Names in (' + @MyColumns + N')
            ) p '
exec sp_executesql @SQLquery;


for more details check my articles.
Basic SQL Queries for Beginners[^]


这篇关于如何使用sqlserver在列中使用pivot多个值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆