Sql server 将数据透视表分组

Sql server 将数据透视表分组,sql-server,sql-server-2008-r2,group-by,pivot-table,Sql Server,Sql Server 2008 R2,Group By,Pivot Table,我想将下表分为两个范围。为此,我对表进行了数据透视,但它显示了一些空字段。如何对表进行分组,使其仅显示not null值 以下是SQL查询: SELECT RangoCuotas, [0 -21 ],[21 -42 ],[42 -79 ],[79 -158 ],[158 -9999] FROM( SELECT IdTasaSeguro, Valor, CONVERT(CHAR(4),MontoMinimo)+'-'+CONVERT(CHAR(4),MontoMaximo

我想将下表分为两个范围。为此,我对表进行了数据透视,但它显示了一些空字段。如何对表进行分组,使其仅显示not null值

以下是SQL查询:

SELECT RangoCuotas, [0   -21  ],[21  -42  ],[42  -79  ],[79  -158 ],[158  -9999]
FROM(
    SELECT IdTasaSeguro, Valor, CONVERT(CHAR(4),MontoMinimo)+'-'+CONVERT(CHAR(4),MontoMaximo) AS RangoMonto, CONVERT(CHAR(4),CASE WHEN CuotaMin = 0 THEN 1 ELSE CuotaMin END)+'-'+CONVERT(CHAR(4),CuotaMax) AS RangoCuotas
    FROM [BEFE_SistemaGestionMDP].[dbo].[TasaSeguro]
    WHERE IdTipoSeguro = 1
) AS SourceTable
PIVOT 
(
SUM(Valor) FOR RangoMonto IN ([0   -21  ],[21  -42  ],[42  -79  ],[79  -158 ],[158 -9999])
) AS PivotTable1
GROUP BY RangoCuotas,[0   -21  ],[21  -42  ],[42  -79  ],[79  -158 ],[158 -9999]

如果要使用
SELECT*
作为主
SELECT
语句,您将看到原因。

解决方案:从
(…)源表中删除不必要的列(例如
idtaseguro


只是猜测一下,从子查询中删除
idtaseguro
。你没有在透视中使用它,所以它很可能会强制多行,也可以在透视后去掉额外的组,你不需要它。
FROM(
    SELECT 
        Valor, 
        CONVERT(CHAR(4),MontoMinimo)+'-'+CONVERT(CHAR(4),MontoMaximo) AS RangoMonto, 
        CONVERT(CHAR(4),CASE WHEN CuotaMin = 0 THEN 1 ELSE CuotaMin END)+'-'+CONVERT(CHAR(4),CuotaMax) AS RangoCuotas
    FROM [BEFE_SistemaGestionMDP].[dbo].[TasaSeguro]
    WHERE IdTipoSeguro = 1
) AS SourceTable