
Murcks
Mitglieder-
Gesamte Inhalte
38 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Murcks
-
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:
-
Ich bekomm da immer nur Error converting data type varchar to float.
-
Ok, es funktioniert, ABER meine Formel gibt eine Kommazahl aus und keine Ganzzahl. Der rundet die Ergebnisse ab.
-
Hmm, der schmeißt mir immer noch die komplette Formel raus, kein Ergebnis.
-
In dem Programm können vom Benutzer Formeln zur Berechnung von Artikelmaßen eingegeben werden, da sich diese regelmäßig ändern. Diese Formel wird dann zum jeweiligen Artikel in einer Tabelle in SQL gespeichert. Diese Formel muss dann in SQL ausgerechnet werden.
-
Ja aber der String mit der Formel (strFormel) kommt ja aus einem Programm und muss in SQL verarbeitet/ausgerechnet werden. DECLARE @myEval AS INT SELECT strFormel FROM tbl_Formeln WHERE ... SET @myEval = strFormel ...funktioniert doch nicht, oder?
-
Mann, das hatte ich befürchtet! Na gut, hätte ja sein können. Dann eben der kompliziertere Weg, danke dir.
-
Danke hat sich erledigt. Die Case Abfrage wie wir sie aus C++ oder VB kennen gibt's so bei SQL nicht, da muss man mit IF arbeiten.
-
Hallo zusammen! Es gibt in VB eine Funktion Eval(). Diese Funktion liest einen mathematischen String ein und rechnet dieses aus. Bsp. DIM strFormel AS STRING DIM dblLoesung AS DOUBLE strFormel = "3 * 6 + 15/3" dblLoesung = Eval(strFormel) Somit wäre also dblLoesung = 23. Meine Frage: Gibt es so eine ähnliche Funktion in SQL 2005? Falls nicht, wie könnte man soetwas in SQL bewerkstelligen?
-
Hallo! In VB (wie auch in anderen Programmiersprachen) gibt's die "Case-Anweisung", sprich: Select Case Farbe Case Rot (Mach dieses....) Case Blau (Mach jenes...) Case Grün (Mach welches...) End Select Jeder von euch kennt die. Aber wie lautet die Syntax dazu in SQL? :confused: Kann mir jemand helfen?
-
Naja, Arrays darfste net benutzen...