Sql server 动态列-SQL Server 2012

Sql server 动态列-SQL Server 2012,sql-server,pivot,Sql Server,Pivot,有两个表,我想将一些行转换为列。我的数据库引擎是Microsoft SQL Server。下图显示了我想要的结果 你的问题不太清楚,但似乎你想用 样本数据 DECLARE @tblModule TABLE(modId INT,name VARCHAR(200)) DECLARE @tblProfile TABLE(id INT,modId INT,profil VARCHAR(200)) INSERT INTO @tblModule SELECT 1,'Manteniminento' UNIO

有两个表,我想将一些行转换为列。我的数据库引擎是Microsoft SQL Server。下图显示了我想要的结果


你的问题不太清楚,但似乎你想用

样本数据

DECLARE @tblModule TABLE(modId INT,name VARCHAR(200))
DECLARE @tblProfile TABLE(id INT,modId INT,profil VARCHAR(200))

INSERT INTO @tblModule
SELECT 1,'Manteniminento' UNION
SELECT 2 , 'Soporte'

INSERT INTO @tblProfile
SELECT 1,1,'Administrador' UNION
SELECT 2,2 , 'Empleado' UNION
SELECT 3,1 , 'Empleado' UNION
SELECT 4,1 , 'Empleado' UNION
SELECT 5,1 , 'Administrador' UNION
SELECT 6,1 , 'Administrador' 
主查询

SELECT name,SUM([Administrador]) AS Administrador, SUM([Empleado]) AS Empleado
FROM  
(SELECT id,p.modId,m.name,p.profil   
    FROM @tblProfile p
    INNER JOIN @tblModule m ON m.modId = p.modId) AS SourceTable  
PIVOT  
(  
COUNT(modId)  
FOR profil IN ([Administrador], [Empleado])  
) AS PivotTable 
GROUP BY name
结果

name            Administrador   Empleado
Manteniminento  3               2
Soporte         0               1

我找到了我需要的解决办法。我与大家分享我使用SQL的情况:

SELECT A.codEmpresa
        ,A.nomEmpresa
        ,A.codSistema
        ,A.nomSistema
        ,A.codPerfil
        ,A.nomPerfil
        ,modulos = STUFF((SELECT DISTINCT ', ' + M.nomModulo
                                FROM smpseg.[0004] R
                                JOIN smpseg.[0014] SMOP
                                ON SMOP.codSistema = R.codSistema
                                AND SMOP.codModulo = R.codModulo
                                AND SMOP.codPerfil = A.codPerfil
                                AND SMOP.objDefault = CAST(1 AS BIT)
                                JOIN smpseg.[0011] O
                                ON O.codSistema = SMOP.codSistema
                                AND O.codModulo = SMOP.codModulo
                                AND O.codObjeto = SMOP.codObjeto
                                JOIN smpseg.[0010] M
                                ON M.codSistema = O.codSistema
                                AND M.codModulo = O.codModulo
                            WHERE R.codUsuario = @p_codUsuario
                                FOR XML PATH('')), 1, 2, '') FROM smpseg.[0004] A
        JOIN smpseg.[0016] U
            ON U.codUsuario = A.codUsuario

这里有很多关于动态枢轴的问题。你看过其中任何一个吗?尝试过任何技术吗?如果是这样的话,请链接到您已经看过的,然后是您尝试使用它们以及什么不起作用。这不是一个“这是一个规范,请为我写代码”服务。搜索
动态透视
@configbug仅供参考有一个西班牙语版本的stackoverflow,您可能想在那里提问。