2016-06-01 13 views
2

次の表を2つの範囲でグループ化します。これを行うには、私はテーブルをピボットしましたが、それは私にいくつかの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] 

Table Result

+2

ただの推測を取るために行くから削除します。あなたはあなたのピボットでそれを使用していないので、複数の行を強制する可能性が最も高いので、あなたがピボットした後に余分なグループを取り除いても、それは必要ありません。 – Taryn

答えて

2

あなたがメインSELECT文のSELECT *を使用する場合、あなたはその理由が表示されます。

解決策:サブクエリから `IdTasaSeguro`を削除し、(...) SourceTable派生テーブルの不要な列(例:IdTasaSeguro

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 
+1

それは完璧に動作します!、ありがとう! –

関連する問題