2016-05-10 11 views
1

Als erstes entwickle ich in Microsoft Visual Studio IDE. Also, was ich versuche zu bekommen, ist ein Ergebnis einer Abfrage, die die Spalte nvarchar Datentyp ist. Das Ziel dieser Abfrage besteht darin, dem Benutzer zu einem bestimmten Zeitpunkt den Prozentsatz anzugeben, wie viele verschiedene Erweiterungen sich in der Datenbank befinden. Um euch besser zu erklären, ich es hier posten werde:2 Dezimalstellen in einer Nvarchar-Spalte

SELECT Filetype AS 'Extensão', 
COUNT(*) AS 'Nº de ficheiros', 
((COUNT(Filetype) * 100.0)/(SELECT COUNT(*) FROM infofile)) AS 'Percentagem (%)', 
SUM(Filesize) AS 'Total(KB)' 
FROM infofile 
GROUP BY Filetype 
UNION ALL 
SELECT '---------------', 
COUNT('Nº de extensões'), 
((COUNT(Filetype) * 100)/(SELECT COUNT(Filetype) FROM infofile)), 
SUM(Filesize) 
FROM infofile 

Also, was ich versuche, mit dieser Linie von meiner Anfrage zu bekommen ((COUNT(Filetype) * 100.0)/(SELECT COUNT(*) FROM infofile)) AS 'Percentagem (%)' ein Ergebnis ist aber nur mit zwei Dezimalstellen und jede Zeile dieser Spalte. Die Ich habe eine Zeile ((COUNT(Filetype) * 100)/(SELECT COUNT(Filetype) FROM infofile)), die mir die Summe des Prozentsatzes geben, der 100 sein sollte, aber das zeigt mir 100,00000 an.

Hier ist es die Ausgabe, die ich gerade bekomme.

enter image description here

Antwort

0

ein CAST tun, um die NVARCHAR-DECIMAL zu konvertieren: kann

SELECT Filetype AS 'Extensão', 
     COUNT(*) AS 'Nº de ficheiros', 
     CASE WHEN (COUNT(Filetype) * 100.0)/(SELECT COUNT(*) FROM infofile) = 100.0 
      THEN '100' 
      ELSE CONVERT(VARCHAR, CAST(((COUNT(Filetype) * 100.0)/(SELECT COUNT(*) FROM infofile))) AS DECIMAL(10,2)) 
     END AS 'Percentagem (%)', 
     SUM(Filesize) AS 'Total(KB)' 
FROM infofile 
... 
+0

Ist es das, was ich wirklich was, aber nach der UNION ALL Ich habe ein Ergebnis, das mir die Summe in Prozent (100,00) gibt. Es ist nicht möglich, nur 100 ohne Dezimalstellen zu bekommen. –

+0

Ich werde Ihnen eine Antwort geben, aber es wird hässlich sein :-( –

+0

Warum? Was ist das Problem? –

0

Sie verwenden

Format Funktion
Format((COUNT(Filetype) * 100.0)/(SELECT COUNT(*) FROM infofile),'0.##') AS 'Percentagem (%)', 
+0

Aber das ist die Zeile, die ich formatieren möchte ((COUNT (Dateityp) * 100)/(SELECT COUNT (Dateityp) FROM infofile)) –

+0

Sie kann wie folgt aussehen: Format (X, '0. ##') wo X ist dein Ausdruck.Es gibt formatierte Zeichenfolge mit optionalen 2 Ziffern nach Punkt zurück – Proggear

+0

Ich glaube, ich habe verstanden –

Verwandte Themen