2017-12-24 5 views
0

Ich bin mir bewusst, dass es Unterschiede zwischen Oracle SQL und SQL Server gibt. Die Abfrage läuft gut und zeigt das Ergebnis gut an, aber das Problem tritt auf, wenn ich es in einem Kreisdiagramm anzeigen möchte. Ich denke, dass es eine Einschränkung von Visual Studio sein könnte.Visual Studio (2017) SQL kann% sign nicht anzeigen

Hier ist meine SQL-Anweisung:

SELECT 
    CAST(ROUND(CAST(COUNT(LoanAcNo) AS FLOAT)/73 * 100, 1) AS VARCHAR) + '%' AS LoanPercentage, 
    LoanType 
FROM 
    Loan 
GROUP BY 
    LoanType; 

Dies ist, wie ich es umgesetzt:

public DataSet ReadLoanByLoanType() 
{ 
     SqlConnection myConn = new SqlConnection(DBConnect); 

     StringBuilder sqlStr = new StringBuilder(); 
     sqlStr.AppendLine("SELECT cast(round(cast (count(LoanAcNo) as float)/73 * 100 , 1) as varchar) + '%' as LoanPercentage , LoanType"); 
     sqlStr.AppendLine("FROM Loan"); 
     sqlStr.AppendLine("GROUP BY LoanType"); 

     SqlDataAdapter da = new SqlDataAdapter(sqlStr.ToString(), myConn); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 

     return ds; 
    } 
+0

versuchen, die% in [] zum Beispiel + "[%]" –

Antwort

2

Wenn Sie Werte aus einer Datenbank für die Aufnahme in einigen Reporting-Tool des Kreisdiagramm herunterladen möchten, don Drehen Sie den Wert in eine Zeichenfolge, indem Sie ein '%' hinzufügen

Ihr Berichtstool erwartet einige numerische Werte zu Diagramm, keine Zeichenfolge

SQL:

SELECT 
     round(count(LoanAcNo)/ 73.0 * 100.0, 1) as LoanPercentage, 
     LoanType 
    FROM Loan 
    GROUP BY LoanType; 

Tip: Dividieren einer ganzen Zahl durch eine konstante Zahl, die eine Dezimalstelle hat (z.B. Ich dividiert durch 73.0 anstelle von 73) anstelle einer Ganzzahl sollte SQLS machen die Berechnung mit floats - spart Sie müssen die Int zu floaten/macht die SQL kürzer und sauber