Daten verschieben, filtern und zusammenrechnen

Chillazz

Benutzer
Beiträge
22
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

  • upload_2014-9-9_9-33-50.png
    upload_2014-9-9_9-33-50.png
    990 Bytes · Aufrufe: 1
Werbung:
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.

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)
 
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
 
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

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.
 
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
 
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
 
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 .
 
Wiso kopierst du mit einer SP da die Daten hin und her. Wäre nicht eine stink normale View mit GROUP BY sinnvoller?
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
 
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
 
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.
 
Werbung:
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.
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
 
Zurück
Oben