Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

SQL - FRAGE

Mitglied: MiSt

MiSt (Level 2) - Jetzt verbinden

10.01.2019 um 06:42 Uhr, 317 Aufrufe, 11 Kommentare

Guten Morgen,

ich habe ein ein SQL-Script, welches mir eine Liste aufzeigt.
01.
SELECT artikel
02.
   , menge
03.
   , ort
04.
FROM lager
Jetzt ist es so, dass es Artikel doppelt gibt und die Ausgabe 2 Zeigen zeigt.
Jetzt möchte ich gerne, dass nur eine Zeile angezeigt wird.
Hier ein Beispiel:
IST:
01.
[artikel] [menge] [ort    ]
02.
[kulli  ] [23   ] [lager_1]
03.
[kulli  ] [45   ] [lager_2]
SOLL:
01.
[artikel] [menge] [ort    ] [menge] [ort    ]
02.
[kulli  ] [23   ] [lager_1] [45   ] [lager_2]
Wer hätte eine Idee, wie ich das umsetzten kann?

Ich bin für jeden Tipp dankbar.
Gruß Michael
Mitglied: sabines
10.01.2019 um 06:57 Uhr
Moin,

group by oder distinct sollten dafür ausreichen.

Gruss
Bitte warten ..
Mitglied: Volchy
10.01.2019 um 07:22 Uhr
Moin, group by & distinct funktionieren für dich so in der Form alleine nicht, wenn du deine Ausgabe so belassen willst, da für die DB Menge & Ort 2 verschiedene Datensätze sind.

Gibt es denn noch mehr als nur doppelte Einträge?
Mein erster Gedanke wäre gewesen, dass du über Row_Number Funktion arbeiten könntest und mit Union dir die entsprechenden Columns dann befüllst.
Aber es ist auch noch sehr früh am Morgen :-P
Bitte warten ..
Mitglied: MiSt
10.01.2019, aktualisiert um 07:38 Uhr
Moin,

GROUP BY und DISTINCT hätte mich auch gewundert, da ich ja die anderen Werte brauche.
Eigentlich gibt es immer nur 2 Orte. Einen, der immer gleich heisst - "VK-Lager" und einen (pro Artikel) der sich ändert. Dieser Ort hat am Anfang aber immer die gleichen Ziffern/Buchstaben erst nach x zeichen ändern sich die Ziffern --> z.B.: lager1_0234, lager1_2646, lager1_2645

Da ich aber kein SQL-Profi bin, bin ich aktuell mit deinem Gedanken überfordert.
Bitte warten ..
Mitglied: erikro
10.01.2019 um 09:09 Uhr
Moin,

das sollte mit einer Pivot-Table gehe. Guckst Du hier:

https://modern-sql.com/de/anwendung/pivot

hth

Erik
Bitte warten ..
Mitglied: Volchy
10.01.2019 um 09:15 Uhr
Wenn es VK-Lager zu jedem Artikel immer gibt, könntest du den einfach fest in der Spalte mit angeben, wie bspw.:
select artikel, 'VK-Lager', max(ort)
from Tabelle
where ort <> 'VK-Lager'
group by artikel

--> max() hierbei als Aggregatfunktion, da diese Spalte nicht in Group-By angegeben ist --> Sonst gibt es eine Fehlermeldung von Server
Bitte warten ..
Mitglied: TheJoker2305
10.01.2019 um 09:58 Uhr
Hallo Michael,

folgender Code sollte dir dein Ergebnis bringen, solange nicht mehr als das lager_1 und lager_2 existieren.
Eine Lösung dann wäre eine Common Table Expression oder ein weiteres Select um die gesamte Abfrage.

01.
select 
02.
	artikel,
03.
	sum(case when ort = 'lager_1' then menge else 0 end) as menge_1,
04.
	case when ort = 'lager_1' then 'ort_1' else '' end as ort_1,
05.
	sum(case when ort != 'lager_1' then menge else 0 end) as menge_2,
06.
	case when ort != 'lager_1' then ort else '' end as ort_2
07.
from 
08.
	lager
09.
group by
10.
	artikel, ort_1, ort_2
11.
order by 
12.
	artikel, ort_1, ort_2


Gruß
thejoker2305
Bitte warten ..
Mitglied: MiSt
10.01.2019, aktualisiert um 10:29 Uhr
Ich glaube, dass ich euch das Beispiel nicht richtig aufgezeigt habe. Sorry, mein Fehler... Oder ich habs nicht verstanden... : )
01.
[artikel] [menge] [ort     ]
02.
[kulli  ] [23   ] [vk-lager]
03.
[kulli  ] [45   ] [lager_34]
04.
[stift  ] [0    ] [vk-lager]
05.
[stift  ] [56   ] [lager_65]
01.
[artikel] [menge] [ort     ] [menge] [ort     ]
02.
[kulli  ] [23   ] [vk-lager] [45   ] [lager_34]
03.
[stift  ] [0    ] [vk-lager] [56   ] [lager_65]
Der 2. Lagerort "lager_##" ist dynamisch. "vk-lager" gibt es immer.
Bitte warten ..
Mitglied: TheJoker2305
10.01.2019, aktualisiert um 13:11 Uhr
Dann so:

01.
select 
02.
	artikel,
03.
	sum(case when ort = 'vk_lager' then menge else 0 end) as menge_lager_vk,
04.
	case when ort = 'vk_lager' then 'ort_1' else '' end as ort_1,
05.
	sum(case when ort like 'lager_%' then menge else 0 end) as menge_lager_x,
06.
	case when ort like 'lager_%' then then ort else '' end as ort_2
07.
from 
08.
	lager
09.
group by
10.
	artikel, ort_1, ort_2
11.
order by 
12.
	artikel, ort_1, ort_2
Bitte warten ..
Mitglied: MadMax
10.01.2019 um 15:04 Uhr
Hallo Michael,

wenn es je Artikel nur maximal zwei Lager gibt und einer immer 'vk-lager' heißt, würde ich das mit einem ganz billigen join lösen:
01.
select	vk.artikel,
02.
	vk.menge,
03.
	vk.ort,
04.
	l2.menge,
05.
	l2.ort
06.
from	lager vk
07.
	left join lager l2 on l2.artikel = vk.artikel and l2.ort <> vk.ort
08.
where	vk.ort = 'vk-lager'
Gruß, Mad Max
Bitte warten ..
Mitglied: ukulele-7
10.01.2019 um 16:15 Uhr
Es gibt eine ganze Menge Lösungen für das Problem, PIVOT, FOR XML PATH, CASE oder JOIN. Nach allem was ich gelesen habe würde ich auch den join von MadMax wählen. Du könntest den LEFT JOIN noch gegen einen FULL OUTTER JOIN tauschen, dann siehst du auch Artiel die keinen VK Lager Eintrag haben, sollte es den Fall geben. Oder gibt es dann einen Datensatz mit Stückzahl 0?

Wenn du sagst das es "eigentlich" immer nur zwei Einträge gibt dann solltest du dir Gedanken machen ob es auch uneigentlich mal drei geben kann. Das könnte man Abfangen, je nachdem ob es ein Problem werden könnte wenn dann mehrere Zeilen erscheinen.
Bitte warten ..
Mitglied: MiSt
10.01.2019 um 16:39 Uhr
Hi,
ich werde das morgen mal testen.
Ja, es wird immer 2 Lager pro Artikel geben. Das "VK-Lager" ist immer gleich, bei allen Artikeln ist das "VK-Lager". Beim anderen Lager gibt es auch immer nur ein Lager. Das ist nur pro Artikel ein anderes.

VG
Bitte warten ..
Ähnliche Inhalte
Cloud-Dienste
Frag zu sftp und rsync
gelöst Frage von qwertz1Cloud-Dienste2 Kommentare

Hallo, ich habe eine Frage zu rsync im Zusammenspiel mit sftp. Ein Kunde hat sich bei Strato einen Online-Speicher ...

Datenbanken
MS-SQL-Server + T-SQL+Batch
Frage von kallewirschDatenbanken4 Kommentare

Hallo Gemeinde, mal wieder ein Problem aus dem Bereich des MS-SQL-Servers. Folgendes Thema: Nachts sollen automatisch Backups der DBen ...

Datenbanken
SQL Frontend?
Frage von sschultewolterDatenbanken8 Kommentare

Hallo, bin auf der Suche nach einer MySQL Frontend Software. Zum Aufbau: Auf einem Debian Rechner läuft eine MySQL ...

PHP
Abfrage SQL
gelöst Frage von dudeldoedelPHP3 Kommentare

Hallo zusammen, kann man das in einer SQL Abfrage erreichen ??? Feldwert lautet: {"565":{"textinput":{"comment":"1400"}}} als Ergebnis soll ausgelesen werden ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 16 StundenInternet2 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 20 StundenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Switche und Hubs
Medienkonverter mit 12 oder 24 Ports gesucht
Frage von wmuellerSwitche und Hubs24 Kommentare

Guten Morgen, ich bin auf der Suche nach einem größeren Medienkonverter, der "stumpf" 1:1 die Ports auf über ein ...

Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server23 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell21 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...