2016-10-07 1 views
1

Je travaille avec la base de données SQL 2008 Im travaillant sur un rapport que je veux afficher dans un graphique pour moi de faire ce que je dois convertir mes résultats des colonnes en lignes Voici ma requêtecolonnes en lignes

SELECT 
COUNT(CASE WHEN (pm.mortgagestatus) = 10 then 1 end) AS Received, 
SUM(case WHEN (pm.mortgagestatus) = 10 then pm.AmountRequested Else 0 END) AS [Received Amount], 
COUNT(CASE WHEN (pm.mortgagestatus) = 4 then 1 end) AS Passed, 
SUM(case WHEN (pm.mortgagestatus) = 4 then pm.AmountRequested Else 0 END) AS [Passed Amount], 
COUNT(CASE WHEN (pm.mortgagestatus) = 5 then 1 end) AS packaged, 
SUM(case WHEN (pm.mortgagestatus) = 5 then pm.AmountRequested Else 0 END) AS [Packaged Amount], 
COUNT(CASE WHEN (pm.mortgagestatus) = 6 then 1 end) AS Offered, 
SUM(case WHEN (pm.mortgagestatus) = 6 then pm.AmountRequested Else 0 END) AS [Offered Amount] 
FROM tbl_Profile AS p 
INNER JOIN tbl_Profile_Mortgage AS pm 
ON p.id = pm.fk_ProfileID 

cette requête retourne enter image description here

je voudrais la requête de revenir comme ça.

enter image description here

Cela me permettra de mettre les données dans un graphique. Toute aide avec ceci est très appréciée. Vive

Répondre

3

Utiliser l'agrégation avec un case:

SELECT (CASE WHEN pm.mortgagestatus = 10 then 'Received' 
      WHEN pm.mortgagestatus = 4 then 'Passed' 
      WHEN pm.mortgagestatu) = 5 then 'packaged' 
      WHEN pm.mortgagestatus = 6 then 'Offered' 
     END) as Mortgage_Status, 
     COUNT(*) as Total, 
     SUM(pm.AmountRequested) as LoanAmount 
FROM tbl_Profile p INNER JOIN 
    tbl_Profile_Mortgage pm 
    ON p.id = pm.fk_ProfileID 
WHERE pm.mortgagestatus IN (4, 5, 6, 10) 
GROUP BY (CASE WHEN pm.mortgagestatus = 10 then 'Received' 
       WHEN pm.mortgagestatus = 4 then 'Passed' 
       WHEN pm.mortgagestatu) = 5 then 'packaged' 
       WHEN pm.mortgagestatus = 6 then 'Offered' 
      END); 
+0

Salut Gordon Merci d'avoir pris un coup d'oeil à ce quand j'utiliser votre méthode im obtenir l'erreur suivante. "Erreur de dépassement arithmétique lors de la conversion de l'expression en type de données int Avertissement: La valeur nulle est éliminée par un agrégat ou une autre opération SET." – RustyHamster

+0

Je pense que la raison en est parce qu'il essaye de ramener une valeur nulle sous Mortgage_Status – RustyHamster

+0

pour corriger cela, j'ai ajouté une clause WHERE comme si pm.MortgageStatus IN (10,4,5,6) cela fonctionne maintenant très bien. Merci pour votre aide. – RustyHamster