Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SSRS Report anlegen mit gewisser Ordnung

Empfohlene Antworten

Veröffentlicht

Hey Leute,

konnte das Topic irgendwie nicht besser beschreiben.

Also ich hab da so nen Report, da werden 4 Tabellen miteinander verglichen und ich möchte jetzt, das immer die Leeren Felder von jeder Spalte als erstes angezeigt werden, das es im Endeffekt dann irgendwann wie eine Treppe aussieht. Etwa so:

1234

X

XX

XXX

XXXX

Vielleicht hat ja mal jemand eine Idee...

Grüße

Rob

Hab ich getestet, funktioniert irgendwie nicht, aber vielleicht mach ich auch was falsch...

So ungefähr sieht meine Query aus:

SELECT table1.name1, table2.name2, table3.name3, table4.name4

FROM table1

LEFT OUTER JOIN table2

ON table1.name1 = table2.name2

LEFT OUTER JOIN table3

ON table2.name2 = table3.name3

LEFT OUTER JOIN table4

ON table3.name3 = table4.name4

ORDER BY table1.name1, table2.name2, table3.name3, table4.name4

Ob man da jetzt ASC oder DESC hinschreibt, oder in China fällt nen Sack Reis vom Fahrrad, ist egal, denn es geht so oder so nicht. Hat jemand eine Idee was ich da anders machen könnte, damit meine Sortierung funktioniert??

Grüße

Digga_Mies

Hi,

Deine Sortierung läuft erstmal nach alphabetischer Reihenfolge unabhängig von der Länge des Strings. Diesen musst Du auch sortieren.

Angenommen man sortiert erst nach der Länge und dann in alphabetischer Reihenfolge, dann erhältst Du den besagten Baum.

Ungefähr so:


SELECT table1.name1, table2.name2, table3.name3, table4.name4

FROM table1 

LEFT OUTER JOIN table2 

ON table1.name1 = table2.name2 

LEFT OUTER JOIN table3 

ON table2.name2 = table3.name3

LEFT OUTER JOIN table4 

ON table3.name3 = table4.name4

ORDER BY 

LEN(table1.name1), 

table1.name1, 

LEN(table2.name2),

table2.name2, 

LEN(table3.name3), 

table3.name3, 

LEN(table4.name4), 

table4.name4

das Ergebnis sähe etwas so aus: X XX XXX X XXX XXXX X XX Oder Du sortierst erst alles nach der Länge und dann alphabetisch:

SELECT table1.name1, table2.name2, table3.name3, table4.name4

FROM table1 

LEFT OUTER JOIN table2 

ON table1.name1 = table2.name2 

LEFT OUTER JOIN table3 

ON table2.name2 = table3.name3

LEFT OUTER JOIN table4 

ON table3.name3 = table4.name4

ORDER BY 

LEN(table1.name1),

LEN(table2.name2),

LEN(table3.name3),

LEN(table4.name4),   

table1.name1, 

table2.name2, 

table3.name3, 

table4.name4

Dann würde das Ergebnis so aussehen:

X

XX

XXX

XXXX

XXXXX

Viele Grüße,

Thomas

Danke für die Antwort...Aber das ist nicht so ganz mein Problem...

Es geht in diesem Falle nicht um die Länge der Inhalte...Ich meinte eigentlich das die Nullwerte oben stehen...

Die tabelle würde also so aussehen sollen:

1|0|0|0

1|0|0|0

1|1|0|0

1|1|1|0

1|1|1|0

1|1|1|1

Die 1 steht für einen Eintrag und die 0 für einen Nullwert...Und daraufhin sollen die Einträge dann auch noch alphabetisch sortiert werden...Das funktioniert aber einfach nicht...Wenn man nur 2 Tabellen hat, die miteinander verknüpft sind, dann klappt das wunderbar, aber ab 3 steigt die Sortierung aus, und er sortiert die erste Spalte noch nach Alphabet und die 2. 3. und 4. werden einfach immer passend dran geklatscht...Mittlerweile glaube ich, das man eine solche Sortierung gar nicht durchführen kann...Weil ja alle 4 Tabellen miteinander verknüpft sind...

Meinem Verständnis nach müsste das ganze als Erstes in Spalte 1 nach ABC sortiert werden und dürfte nur alle NULL werte in den anderen Spalten haben...Darauf sollte dann wieder von Vorne angefangen werden im ABC wenn ein zweiter Wert dazukommt in Spalte 2...Und so immer durchgehend...Aber meine Logik ist da anscheinend nicht weit genug...

Wenn irgendjemand schon mal auf ein solches Problem gestoßen ist, bitte helft mir...:confused::confused:

Greetz

Rob

Hallo,

die Sortierung ist korrekt. Mal angenommen man hat vier Tabellen:

Land, Stadt, Strasse, Hausnummer. (nur als Beispiel...)

Erstellst Du einen Join wie Du ihn oben erstellt hast so erhältst Du erst alle Länder schön sortiert. Die Sortierung der ersten Spalte steht somit fest.

Jetzt werden in der nächsten Spalte die Städte ausgegeben... (sortiert innerhalb des Landes!)

Sollte hier ein Land vorkommen zu dem keine Städte eingetragen sind (also Stadt ist NULL) so wird dieses NULL natürlich neben dem Land auftauchen bei dem es NULL ist. So kann es auch in der Mitte oder unten stehen. So zieht sich das durch alle abgefragte Tabellen.

Wenn Du dort NULL Werte drin hast wirst Du höchstens eine Sortierung in dieser Form erreichen.

1|0|0|0

1|1|0|0

1|1|1|0

1|1|1|1

1|0|0|0

1|1|1|1 usw.

Somit ist dies kein Fehler sondern logisch völlig korrekt, weil Du ja nicht die NULL Werte (in z.B. eine andere Stadt) verschieben kannst, nur damit es besser aussieht.

Viele Grüße,

Thomas

Okay...Also hab ich zumindest schon mal nicht falsch gedacht, das ist schon mal ermutigend :P

Aber rein aus dem Gedanken her...Kann man überhaupt so sortieren wie ich meinte? Also quasi alle Länder mit Nullwerten als erstes sortiert, und danach erst die Länder die eine Stadt eingetragen haben usw....

Iwie lässt sich das schlecht erklären...Ich hoffe ihr versteht was ich meine...Man kann doch sicher über eine Query eine solche Sortierung erstellen, oder meint ihr nicht?

Könnte nur sein, das sie etwas komplizierter wird.

Danke für die Antworten ;)

Rob

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.