Benutzer mit den meisten Antworten
Hilfe bei Abfrage

Frage
-
Hallo an alle,
ich habe hier ein Problem wo ich doch hoffe das ihr mir helfen könnt.
Art. Nr Preis Typ
1 15 B
2 25 A
2 20 B
3 15 A
3 45 B
Ich möchte alle B Werte haben mit gruppieren komme ich hier nicht weiter. Gibt es hier nicht einen schönen Praktikablen Ansatz?
- Bearbeitet Toot_Braunstein Dienstag, 30. Januar 2018 08:25
Antworten
-
Hallo Stefan,
das ORDER BY ArtNr bei der ROW_NUMBER() Window Function ist zu viel. Hier reicht das ORDER BY Typ DESC.
Dafür würde ich ein ORDER BY ArtNr ans Ende des Statements setzen!
Am Ergebnis ändert das freilich nichts! :-)
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort markiert Stefan FalzModerator Mittwoch, 7. März 2018 15:40
-
Hi,
probier es mal hiermit.
WITH Query AS ( SELECT *, ROW_NUMBER() OVER( PARTITION BY ArtNr ORDER BY ArtNr, Typ DESC ) AS RowNumber FROM <Tabelle> ) SELECT * FROM Query WHERE RowNumber = 1
Dennoch wäre es immer hilfreich, wenn Du das gewünschte Ergebnis auch posten würdest.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 30. Januar 2018 10:25
- Als Antwort vorgeschlagen Stefan FalzModerator Mittwoch, 14. Februar 2018 10:53
- Als Antwort markiert Stefan FalzModerator Mittwoch, 7. März 2018 15:40
Alle Antworten
-
Hi,
es wäre hilfreich, wenn Du das gewünschte Ergebnis anhand deiner Beispieldaten aufgezeigt hättest.
So vermute ich mal, dass Du einfach eine WHERE Klausel auf Typ = 'B' brauchst.
SELECT ... FROM <Tabelle> WHERE Typ = 'B'
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Toot
nach was möchtest du denn gruppieren? Wenn du nur alle B Werte haben möchtest wäre
select * from TABELLE Where typ = 'B' order by ArtNr
Oder
select * from TABELLE order by Typ
Benjamin Hoch
MCSE: Data Platform & Data Management and Analytics
MCSA: SQL Server 2012/2014 & 2016 DB Administration
MCSA: Windows Server 2012
war zu langsam :(- Bearbeitet Benjamin.Hoch Dienstag, 30. Januar 2018 08:44
-
Entschuldigung es fehlt noch ein entscheidender Punkt:
Art. Nr Preis Typ
1 15 B
2 25 A
2 20 B
3 15 A
3 45 B
4 90 A
Ich habe auch noch den Fall das Art. Nr 4. Das Ziel ist es Wenn A oder B für eine Art. Nr vorhanden sind, dann soll B genutzt werden. Ist nur A (siehe Beispiel Art. Nr 4) vorhanden soll A genutzt werden.
Nochmals Entschuldigung. Das war von mir zu voreilig der Post. Ich habe das Beispiel nicht richtig durchdacht.
-
Hi,
probier es mal hiermit.
WITH Query AS ( SELECT *, ROW_NUMBER() OVER( PARTITION BY ArtNr ORDER BY ArtNr, Typ DESC ) AS RowNumber FROM <Tabelle> ) SELECT * FROM Query WHERE RowNumber = 1
Dennoch wäre es immer hilfreich, wenn Du das gewünschte Ergebnis auch posten würdest.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 30. Januar 2018 10:25
- Als Antwort vorgeschlagen Stefan FalzModerator Mittwoch, 14. Februar 2018 10:53
- Als Antwort markiert Stefan FalzModerator Mittwoch, 7. März 2018 15:40
-
Hallo Stefan,
das ist ein guter Einwand! Dem komme ich gerne nach.
Ergebnis:
Art. Nr Preis Typ
1 15 B
2 20 B
3 45 B
4 90 A
Wie schon beschrieben. Wenn A und B vorhanden dann soll nur B ausgegeben werden. Wenn nur ein Typ vorhanden ist dann nur eben dieser. In dem Beispiel ist das dann A.
-
Hi,
dann ist meine obige Abfrage das, was Du suchst. Die gibt exakt dieses Ergebnis aus.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
das ORDER BY ArtNr bei der ROW_NUMBER() Window Function ist zu viel. Hier reicht das ORDER BY Typ DESC.
Dafür würde ich ein ORDER BY ArtNr ans Ende des Statements setzen!
Am Ergebnis ändert das freilich nichts! :-)
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort markiert Stefan FalzModerator Mittwoch, 7. März 2018 15:40
-
Hallo Christoph,
Recht hast Du. ArtNr ist ja wegen dem PARTITION BY im ORDER BY nicht notwendig bzw. briungt nix.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community