Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Daten verschieben, filtern und zusammenrechnen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Chillazz, 9 September 2014.

  1. Chillazz

    Chillazz Benutzer

    Guten Morgen oder guten Tag Liebe Community ,
    ich störe mal wieder.

    Ich muss heute von einer Tabelle wo die Spalte Postleitzahl vorhanden ist, diese in eine neue Tabelle Kopieren.
    Das Ziel ist das in der neuen Tabelle angezeigt wird, wie viele Leute aus einer Region kommen, dies soll immer anhand der ersten drei Zahlen gemacht werden, also 531xx =12 Leute.
    Jetzt weiß ich eben nicht wie man es sagt rechne zusammen, und wie man sagt das alle die schon verarbeitet wurden sind nicht mehr benutzt werden dürfen.
    Ich denke ich denke wieder zu Kompliziert =)


    Mein Gedanke war es das man sagt
    Select Postleizahl
    From Tabelle
    insert into die andere Tabelle
    und dann irgendwie sagt lies die ersten drei Zalen und die Identischen kopierst du rüber oder so:confused:, und natürlich das er nicht die Daten Doppelt benutzt.


    falls das jemand eine Lösung hat würde mich freuen , da ich ja wie schon in andere Post Lernen will , wäre es nett wenn ihr dazu schreibt was genau wo passiert , lerne halt nur wenn ich wie was geschieht .
    Ansätze würden mir auch reichen.
     

    Anhänge:

  2. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from plz;
      plz  | anzahl
    -------+--------
     12341 |  10
     12342 |  8
     12350 |  12
     23450 |  11
     23451 |  12
    (5 rows)
    
    Time: 0,172 ms
    test=*# select substring(plz,1,3) || 'xx', sum(anzahl) from plz group by 1;
     ?column? | sum
    ----------+-----
     234xx  |  23
     123xx  |  30
    (2 rows)
    
     
    Chillazz gefällt das.
  3. Chillazz

    Chillazz Benutzer

    Erstmal ganz Herzlichen Dank dir akretschmer, ich verstehe leider nur zum Teil was genau da geschieht , wärst du eventuell so nett mir für Anfänger zu erklären was genau da geschieht `?:oops:

    Hoffentlich kommt das nicht zu dreist rüber , will es halt echt Lernen und verstehen .
    Nochmals Danke dir
    Lg Chillazz
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Na, das erste Select zeigt die Tabelle, wie sie ist. Das zweite Select macht in der ersten Spalte aus der PLZ einen neuen String, indem es den Teilstring vom 1 bis 3. Buchstaben der PLZ nimmt und ein 'xx' anhängt, die zweite Spalte ist die Summe von Anzahl, das ganze gruppiert nach der ersten Spalte.
     
    Chillazz gefällt das.
  5. Chillazz

    Chillazz Benutzer

  6. Chillazz

    Chillazz Benutzer

    Guten Morgen nochmal ich =)
    nach dem ich mit dem
    obigen
    Code die Postleitzahlen zusammengezählt hatte, sollte ich nun alle Tabellen die ich habe zusammenfügen und zählen .

    Die mit einer Stored Procedure , nach langen hin und her habe ich es mit Hilfe mal wieder gepackt , nur jetzt habe ich seit gestern das Problem das es immer zu einen Syntax Fehler kommt den ich einfach nicht entfernt bekomme=(.

    Mittlerweile habe ich so einiges ausprobiert aber verschwinden wollen die einfach nicht, ob einer von hier den eventuell sieht
    Die Fehler habe ich mit ROT markiert und mit Blau kommentiert
    CREATEPROCEDURE[dbo].[uspwSummePLZ]
    -- Add the parameters for the stored procedure here
    @NL nvarchar(50),
    @Artikel nvarchar(20),
    @TeilPLZ nvarchar(20),
    @Menge decimal(18,2),
    @MengeKontak tnvarchar(10)
    AS
    BEGIN

    SETNOCOUNTON;
    DECLARE@PLZMengeTABLE
    (MNL nvarchar(50),
    MPLZ nvarchar(20),
    MTeilPLZ nvarchar(50),
    MMenge nvarchar(50))

    INSERTINTO@PLZMenge
    (MNL,MPLZ,MTeilPLZ,MMenge)
    SELECT ([NL],[Artikel],[TeilPLZ]SUM([Menge]) !!! Hier die erste Fehlermeldung und zwar nach [NL], < das Komma wird als falsch angezeigt, außerdem im der reihe nach SUM([Menge]) unterstreicht er mir Menge als falsch an .
    FROMtmpImportAll
    WHEREMonat=@MonatANDJahr=@Jahr
    GROUPBY[NL,Artikel,TeilPLZ]
    HAVINGSUM([Menge])<> 0 !!! Auch hier wieder Fehler bei der Menge
    DECLARE@PLZContactTABLE
    (CPLZnvarchar(20),
    CAnzsmallint)
    INSERTINTO@PLZContact
    (CPLZ,CAnz)
    SELECT[PostCode],COUNT([PKID])
    FROM[dbo].[tabKontakte],@PLZMenge
    WHEREMPLZlike[PostCode]
    GROUPBY[PostCode]

    AlterProcedure[dbo].[tabUmsatz]
    @Monatsmallint,
    @Jahrsmallint

    AS
    Begin <<<!!!Begin wird auch als Fehler angezeigt

    SETnocountON;

    DELETE[dbo].[tabUmsatz]
    WHEREMonat=@Monat <<<< @Monat und @Jahr auch , ich erkenne dort leider nicht woran es liegen kann .
    andJahr=@Jahr
    INSERTINTO[dbo].[tabUmsatz]
    (NL,
    Artikel,
    TeilPLZ,
    Menge)
    SELECT[CPLZ],[CAnz]
    FROM@PLZContact
    END

    Für jede Hilfe bin ich euch Dankbar
     
  7. Chillazz

    Chillazz Benutzer

    Habe die Fehler gefunden
    hier nochmal zum Gucken was verbessert wurde
    INSERTINTO@PLZMenge
    (MNL,MPLZ,MTeilPLZ,MMenge)
    SELECT[NL],[Artikel],[PLZ],SUM(Menge)
    FROMtmpImportAll
    WHEREMonat=@MonatANDJahr=@Jahr
    GROUPBY[NL],[Artikel],[PLZ]
    HAVINGSUM([Menge])<> 0


    die Klammern mussten entfernt werden, und ich hatte die Falsche Spalten Bezeichnung drin.
    Und zu den anderen Fehler mit @Monat und @Jahr ,die musste ich noch oben Deklarieren somit war dies auch geklärt.
    Das einzige was nicht bisher gelöst ist, ist das mit dem End , werde natürlich auch Posten wenn ich weis woran es lag .
    LG Chillazz
     
  8. Chillazz

    Chillazz Benutzer

    Alle Fehler sind beseitigt
    ich musste halt noch eintragen woher er die Daten nimmt , hatte ich einfach in der ganzen Fehler suche vergessen :confused:
    hier nochmal zum anschauen :

    INSERTINTO[dbo].[tabUmsatz]
    (TeilPLZ,Menge)
    Select[CPLZ],[CAnz]
    From@PLZContact


    Thema kann geschlossen werden , und danke für die Hilfe an akretschmer nochmal .
     
  9. ukulele

    ukulele Datenbank-Guru

    Wiso kopierst du mit einer SP da die Daten hin und her. Wäre nicht eine stink normale View mit GROUP BY sinnvoller?
     
  10. Chillazz

    Chillazz Benutzer

    Hat mit dem Projekt zu tun, also ich muss das so machen.


    Und jetzt nochmal habe mit dem Code doch ein Problem, es kommt jetzt immer die Fehlermeldung
    Ungültiger Objektname 'dbo. :eek:, obwohl die Tabelle vorhanden ist ,hatte sie extra nochmal neu Angelegt aber bringt alles nix.
    Hatte hier jemand sowas schon einmal ?
    Gruß Chillazz
     
  11. ukulele

    ukulele Datenbank-Guru

    Ja und aus Erfahrung kann ich dir sagen es ist höchstwarscheinlich ein Schreibfehler oder es gibt das Objekt wirklich nicht :)
     
  12. Chillazz

    Chillazz Benutzer

    Ja das dachte ich auch aber die Tabelle ist vorhanden , und alle Spalten Kontrolliert ist alles da und richtig :eek:

    ist echt zum wahnsinnig werden:confused:
     
  13. Chillazz

    Chillazz Benutzer

    Juhu es ist weg endlich :D

    Jetzt habe ich den Fehler, den ich davor hatte und wo ich hier eigentlich Fragen wollte.
    Ich bekomme jetzt immer die Fehlermeldung


    Fehler beim Konvertieren des nvarchar-Datentyps in numeric.

    Habe mich auch schon Informiert ,das man das mit einer Cast oder Convent Klausel rausbekommen würde.
    Leider weis ich nicht wie ,und wo genau, man diese dann einsetzt, und wie man diese genau Formuliert.

    Könnte mir da eventuell einer Helfen?
    LG Chillazz

    Also Fehler ist bei der Zeile hier :



    DELETEFROM[dbo].[tmpEndTabelle]
    WHEREMonat=@Monat
    ANDJahr=@Jahr
    ANDKundennummer= 82728

    INSERTINTO[dbo].[tmpEndTabelle]
    ([Artikel]
    ,[Menge]
    ,[Kundennummer]
    ,[PLZ]
    ,[Preis]
    ,[Monat]
    ,[Jahr])
    SELECT
    [Artikel]
    ,[Menge]
    ,82728---
    ,[PLZ]
    ,[Preis]
    ,[Monat]
    ,[Jahr]
    FROM[dbo].[tmpTabelleName]
    WHEREMonat=@Monat
    andJahr=@Jahr
     
  14. ukulele

    ukulele Datenbank-Guru

    Der Fehler besagt das du einen NVARCHAR Wert in eine NUMERIC Spalte schreiben möchtest und dies fehlschlägt. Vermutlich ist die Preis Spalte von tmpTabelleName irgendwie NVARCHAR und da steht irgendwo Bullshit drin, was bei falschen Datentypen eigentlich auch der gerechten Strafe entspricht.
     
    Chillazz gefällt das.
  15. Chillazz

    Chillazz Benutzer

    DANKE hattest recht, das passiert wenn mehrere an einen Projekt Arbeiten. Aber hätte ja auch einfach mal die Tabellen alle Kontrollieren können.
    Jetzt geht alles endlich, ganz Herzlichen Dank
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden