Willkommen bei Entwickler-Forum.
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 29
  1. #1
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    28

    Beitrag Zahl ist als NVARCHAR deklariert - Konvertieren in INT möglich, um Summen zu bilden ?

    Hallo Zusammen,

    wir nutzen im Unternehmen den SQL Server 2016. In dieser Datenbank besteht eine Tabelle "Anzahl" die aus 3 Spalten (Kunden_ID, Kunden_Name, Anzahl_Verkauf) besteht. Die Spalte "Anzahl_Verkauf" beinhaltet tatsächlich die Anzahl der Käufe des Kunden (z.B 15) ABER das im "NVARCHAR" Format
    Ich kann in meiner Abfrage natürlich keine Summe ziehen. Ich erhalte immer die Fehlermeldung "Operand data type nvarchar is invalid for sum Operator". Kann mir bitte jemand diesbezüglich behilflich sein? Ich muss in meiner Abfrage Summen bilden. Die Datenmenge liegt bei über 3 Millionen, daher kann ich die Daten
    nicht in Excel kopieren und dort weiterverarbeiten.

    Vielen Dank im Voraus. Ich hoffe, dass ich Euch mein Problem verdeutlichen konnte und ihr mir weiterhelfen könnt.

    Gruß,
    Melih
    PS: Ich weiß auch nicht wer auf die dumme Idee gekommen ist, ein solches Feld als NCARCHAR zu deklarieren :-(((

  2. #2
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.291

    Standard

    Versuch mal
    SELECT convert (int, N'tabelle.meineSpalte') FROM tabelle

    Wenn das geht, dann noch das SUM drum rum.
    Gruß, defo

  3. #3
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    4.829

    Standard

    Ich weiß auch nicht wer auf die dumme Idee gekommen ist, ein solches Feld als NCARCHAR zu deklarieren :-(((
    Du kennst aber bestimmt jemanden der das ändern kann.

  4. #4

  5. #5
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    28

    Standard

    Guten Morgen Zusammen,

    leider hat es nicht funktioniert Ich habe folgende zwei Befehle versucht:
    Code:
      SELECT convert (int, [tabelle].[Spalte])  FROM [tabelle]
    
    UND
    
    SELECT CAST (Spalte] AS int (25)) as int FROM [tabelle]
    Ich habe in beiden fällen folgende Fehlermeldung erhalten:

    Conversion failed when converting the nvarchar value '2,00' to data type int

    Habt Ihr eine Idee, weshalb es nicht funktioniert hat? Ich bin über Eure Hilfe sehr dankbar!!!

    Gruß
    Melih

  6. #6
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.262

    Standard

    2 Komma 00 ist eben keine Zahl und schon gar kein INT
    Wahrscheinlich vorab noch das Komma durch einen Punkt ersetzen
    Christian

  7. #7
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    28

    Standard

    Das ist mir nicht bewusst gewesen. Ich dachte, dass 2,00 genauso wie 2.00 ist. Ich habe jetzt etwas rumprobiert und mit REPLACE die Werte geändert, sodass die Werte jetzt als 2.00 angezeigt werdenin meiner Abfrage.
    Code:
    	SELECT 
     REPLACE([Spalte],',','.')  as Neu
    
    FROM [tabelle]
    Aber ich bekomme noch keine Summe hin. Und ja, ich hatte einen Denkfehler 2.00 nicht als int sondern als float zu konvertieren. Aber mit folgendem Befehl bekomme ich wieder eine Fehlermeldung:
    Code:
    	SELECT 
    convert (float, (REPLACE([Spalte],',','.')))  as Neu
    FROM [tabelle]
    Fehlermeldung: Error converting data type nvarchar to float.

    Ich frag mich, ob es überhaupt möglich ist, die Werte in der Spalte als Zahl zu nutzen, um Summen zu bilden?!
    Geändert von melih79 (11.10.2017 um 08:23 Uhr)

  8. #8
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.262

    Standard

    ich kenne MSSQL nicht, aber in Oracle kann man ein sum auf eine Spalte mit NVARCHAR2 loslassen und es werden Leerzeichen ignoriert und auch Kommawerte umgesetzt. Erst wenn wirklich andere Zeichen als Ziffern enthalten sind, gibt das Fehler.
    Also ev. hast du noch anderen Zeichen als Ziffer in den Daten? Leerzeichen?
    Christian

  9. #9
    Zaungast
    Registriert seit
    17.05.2011
    Beiträge
    28

    Standard

    Hallo Christian,

    ich habe mir die Werte angeschaut ( über Edit Top 200 Rows) und Sie sind ohne Leerzeichen oder sonst was.
    Geändert von melih79 (11.10.2017 um 08:57 Uhr)

  10. #10
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.262

    Standard

    Kannst du dich nicht rantasten, also erstmal grundsätzlich prüfen ob das geht.
    select convert ...from table where id=XX
    Also explizit mit einem Datensatz testen und feststellen, ob es grundsätzlich geht.
    Wenn es mit einigen Datensätzen dann geht, muss ja dann etwas wohl an den Daten nicht stimmen, dass die nicht umgewandelt werden können.
    Ggf. dann mit isnumeric prüfen und die Datensätze bei denen das nicht geht in eine extra Tabelle schreiben und die dann analysieren
    Christian

 

 
Seite 1 von 3 1 2 3 LetzteLetzte

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •