Murcks
Mitglieder-
Gesamte Inhalte
38 -
Benutzer seit
-
Letzter Besuch
-
Permutation in SQL (Alle Kombinationsmöglichkeiten)
Murcks antwortete auf Murcks's Thema in Datenbanken
Also MS SQL Server 2005, T-SQL. Kartesisches Produkt hab ich auch schon probiert, aber ich krieg's so auch net hin. Das Ergebnis soll folgendermaßen aussehen: Jedes Element aus ABCD wird in die neue Tabele geschrieben, somit haben wir nach der Prozedur (4 *24 =) 96 Datensätze in der Tabelle stehen. Jeder Datensatz eines "Kombinationsblocks" bekommt ne nicht indizierte ID um Kombiblöcke wieder eindeutig identifizieren zu können. Bsp: NEUE TABELLE ID ELEMENT 1 A 1 B 1 C 1 D 2 B 2 A 2 D 2 C 3 C 3 B 3 A 3 D usw. Ist das verständlich? :confused: -
Hallo! Ich habe folgendes Problem zu lösen und komme auf keinen grünen Zweig: Ich habe n Datensätze aus einer Tabelle. Meinetwegen: A, B, C und D Und ich versuche einen Algorithmus zu entwickeln der mir alle (4! =) 24 Kombinationsmöglichkeiten berechnet, also: ABCD BADC CDAB usw. Leider fehlt mir der Ansatz. Hat einer von euch so etwas schonmal gemacht? Bitte um Hilfe.
-
Bedankt!
-
Hallo! Ich habe eine SP geschrieben, die einige Abfragen enthält. Wenn aber eine bestimmte Abfrage zutrifft soll die SP abbrechen. Welchen Befehl verwendet man dafür?
-
Ja, ich bin grad am rumprobieren. Die Daten kommen aus einer Tabelle.
-
Hmm, anscheinend nicht... Dann muss ich eben den komplizierteren Weg gehen!
-
Hallo! Stellt euch folgendes vor: Ihr habt in einem Access-Formular eine Listbox in der Datensätze angezeigt werden. Ihr habt neben der Box zwei Buttons (Rauf / Runter). Mit diesen Buttons soll es möglich sein den/die jeweils markierten Satz/Sätze pro Klick eine Position nach oben oder unten zu verschieben. Frage: Gibt es eine Funktion dafür?
-
@ Goos Danke! Das funktioniert! [FONT="Courier New"]DECLARE @Message AS VARCHAR(100) DECLARE @Value AS DECIMAL(10, 4) SET @Value = 0.25 SET @Message = 'Auf alle Artikel ' + CONVERT(VARCHAR(10), FLOOR(@Value * 100)) + '% Rabatt!' PRINT @Message[/FONT]
-
Hätte klappen können mit ROUND(), aber die Zahl soll nicht gerundet sondern einfach nur auf eine Nachkommastelle gekürzt werden. Wir reden hier übrigens vom SQL Server 2005.
-
OK, wenn's keine explizite Funktion dazu gibt, dann werd ich das benutzen: [FONT="Courier New"][COLOR="Blue"]DECLARE[/COLOR] @Value [COLOR="blue"]AS DECIMAL[/COLOR] (10, 4) [COLOR="blue"]SET[/COLOR] @Value = 1.2000 [COLOR="blue"]PRINT[/COLOR] [COLOR="Red"]'Die Zahl (auf eine Stelle hinterm Komma): '[/COLOR] + [COLOR="Magenta"]STUFF[/COLOR]([COLOR="magenta"]CONVERT[/COLOR]( [COLOR="blue"]VARCHAR[/COLOR](10) , @Value), [COLOR="Magenta"]CHARINDEX[/COLOR]('.', @Value) + 2, 3, [COLOR="Red"]''[/COLOR])[/FONT] Naja, hatte gedacht, dass es vielleicht weniger "kompliziert" geht, trotzdem Danke!
-
Hallo! Ich mal wieder. Ich möchte gerne eine Kommazahl (z.B. 1,2000) mit nur einer Kommastelle (1,2) ausgeben. Gibt es da (wie in VB) einen "Format"-Befehl? Finde dazu leider nix.
-
Dann wäre alles geklärt! Vielen Dank!
-
Also: SET könnte man überall mit SELECT austauschen, aber nicht umgekehrt (z.B. wenn man Werte aus einer Tabelle holt). SELECT @var = 1 ist äquivalent zu SET @var = 1
-
Danke euch, aber funktioniert jetzt so: [FONT="Courier New"]EXEC ('Select ' + @strFormel) EXEC ('Insert Into [I]Zieltabelle[/I] ([I]Ergebnis[/I]) Values (' + @strFormel + ')')[/FONT] Wenn ich den Wert dann wieder brauche: Einfach 'n Select-Statement und den Wert wieder aus der Tabelle holen. So isset. Danke für eure Hilfe! (Kleine Frage noch am Rande: Was genau ist der Unterschied zwischen SET und SELECT? Möchte jetzt keinen neuen Thread dafür aufmachen.)
-
OK, hab das Problem gelöst bekommen. In der Formel war am Ende ein '/ 1000'. Das habe ich dann mittels REPLACE-Funktion durch '* 0.001' ersetzt und schon wurde das richtige Ergebnis (mit Komma) ausgegeben. Danke für die Hilfe bis hier hin! So sieht's nun aus: DECLARE @strFormel AS VARCHAR(500) SELECT @strFormel = '( 2 * 1273 + 2 * 3456 ) / 1000' SET @strFormel = REPLACE(@strFormel, '/ 1000', '* 0.001') EXEC ('SELECT ' + @strFormel + 'AS Ergebnis') Habe jetzt schon mehrfach auf verschiedene Art und Weisen ausprobiert dieses Ergebnis in einer Variable zwischenzuspeichern, weil ich sie später noch verwenden muss. Sämtliche Versuche sind leider fehl geschlagen. Einer vielleicht 'n Tipp? :confused: