Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

comment agréger des valeurs à partir d'un pivot ?

Il semble que le moyen le plus rapide de faire ce que vous voulez serait de changer votre counted2 CTE, donc la colonne TimesTested tenez compte de votre logique. Donc ça devrait être :

counted2 as (
  SELECT
    client_id,
    CASE WHEN TimesTested >= 12 THEN 12 ELSE TimesTested END TimesTested,
    CAST(COUNT(*) AS varchar(30)) AS count,
    CAST(AVG(testfreq) as varchar(30)) as TestFreq,
    CAST(STDEV(TestFreq) as varchar(30)) Stdv
  FROM counted
  GROUP BY
    client_id,
    CASE WHEN TimesTested >= 12 THEN 12 ELSE TimesTested END
    )