Skaletti 0 Geschrieben 11. November 2014 Melden Teilen Geschrieben 11. November 2014 Hallo und Guten Tag.Bin nach längerer Zeit mal wieder in diesem Forum.Eine Sicht mit den Spalten: Startnummer1-Gegner1-Ergebnis1-Stechen1- Startnummer2-Gegner2-Ergebnis2-Stechen2-Sum1-Sum2-Sieger.Der SQL-Code soll jetzt Ergebnis1 und Stechen1 in Sum1 zusammenrechnen, sowie Ergebnis2 und Stechen2 inSum2. Wenn das Ergebnis in Sum1 höher ist als in Sum2 soll der Name in Gegner1 in Ergebnis stehen, oder umgekehrt, wenn Sum2 höher ist als Sum1 soll der Name von Gegner2 in Ergebnis stehen.Beim speichern wird folgender Fehler angezeigt: Falsche Syntax bei '>' Fehler wird sein, IIF, das ist eine Funktion in Access, aber nicht in einer SQL Datenbank, richtig?? Wie muss der Code denn dann für eine SQL Datenbank aussehen? Meine Kenntnisse in SQL sind nicht besonders gut.Kann mir jemand weiterhelfen? Wenn ja, mein Dank im Voraus.Mit freundlichen GrüßenSkalettiHier der Code: SELECT Durchgang_1_VP.Startnummer1, Durchgang_1_VP.Gegner1, Durchgang_1_VP.Ergebnis1, Durchgang_1_VP.Stechen1, Durchgang_1_VP.Startnummer2,Durchgang_1_VP.Gegner2, Durchgang_1_VP.Ergebnis2, Durchgang_1_VP.Stechen2, [Ergebnis1]+[Stechen1] AS Sum1, [Ergebnis2]+[Stechen2] AS Sum2, (IIf([sum1]>[sum2],[Gegner1],[Gegner2])) AS Sieger FROM Durchgang_1_VP; Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 11. November 2014 Melden Teilen Geschrieben 11. November 2014 Die Beispiele hier sind gut: http://stackoverflow.com/questions/14635335/convert-iif-access-query-to-sql-server http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=70480 CASE WHEN und THEN sind deine Freunde. Zitieren Link zu diesem Kommentar
Skaletti 0 Geschrieben 11. November 2014 Autor Melden Teilen Geschrieben 11. November 2014 Hallo Sunny61 Danke für die schnelle Antwort und die beiden Links. Werde mal versuchen ob ich das hinbekomme. Gruß Skaletti! Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 11. November 2014 Melden Teilen Geschrieben 11. November 2014 Werde mal versuchen ob ich das hinbekomme. Das kriegst Du ganz locker hin. Arbeite dich langsam vor, zuerst eine kleine Abfrage zum anfangen. Das wird schon. ;) Zitieren Link zu diesem Kommentar
Skaletti 0 Geschrieben 12. November 2014 Autor Melden Teilen Geschrieben 12. November 2014 Hi, es wird jetzt eine neue Spalte erzeugt, aber leider steht dort der Sieger nicht drin. Ich bekomme keine Fehlermeldung. SELECT Startnummer1, Gegner1, Ergebnis1, Stechen1, Startnummer2, Gegner2, Ergebnis2, Stechen2, Sieger, Ergebnis1 + Stechen1 AS Sum1, Ergebnis2 + Stechen2 AS Sum2, CASE WHEN Sum1 > Sum2 THEN Gegner1 WHEN Sum2 > Sum1 THEN Gegner2 END AS Expr1 FROM dbo.Durchgang_1_VP Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 13. November 2014 Melden Teilen Geschrieben 13. November 2014 es wird jetzt eine neue Spalte erzeugt, aber leider steht dort der Sieger nicht drin. Ich bekomme keine Fehlermeldung. Und was steht dort drin? Hast Du mit einem kleinen Beispiel angefangen? Vermutlich nicht, Du hast es einfach eingebaut, richtig? :) Kannst Du ein Tabellenerstellungsscript und ein paar Beispieldaten bereitstellen? BTW: Bitte poste das zukünftig doch etwas besser formatiert, Danke. Zitieren Link zu diesem Kommentar
ukulele 11 Geschrieben 13. November 2014 Melden Teilen Geschrieben 13. November 2014 Das sollte aber so laufen, aber nur unter SQL nicht unter Access. Man könnte es noch mit ELSE 'unentschieden' ergänzen. Zitieren Link zu diesem Kommentar
Skaletti 0 Geschrieben 14. November 2014 Autor Melden Teilen Geschrieben 14. November 2014 Hallo Sunny61, in der Spalte Sieger steht leider nichts drin. Ich Versuche mal den Tabellenaufbau und die Sicht darzustellen. Tabelle Sicht Startnummer1 Startnummer1 Gegner1 Gegner1 Ergebnis1 Ergebnis1 Stechen1 Stechen1 Startnummer2 Startnummer2 Gegner2 Gegner2 Ergebnis2 Ergebnis2 Stechen2 Stechen2 Sum1 SQL-Code ASSum1 Sum2 SQL-Code ASSum2 Sieger SQL-Code ASSieger Werte die in der Tabelle stehen werden: Startnummer1 Gegner1 Ergebnis1 Stechen1 Startnummer2 Gegner2 Ergebnis2 Stechen2 Sum1 Sum2 Sieger 1 Mustermann, Klaus 98 9 2 Test, Willi 98 10 3 Probe, Hugo 96 0 4 Versuch, Dieter 95 0 Werte die jetzt so in der Sicht stehen: Startnummer1 Gegner1 Ergebnis1 Stechen1 Startnummer2 Gegner2 Ergebnis2 Stechen2 Sum1 Sum2 Sieger 1 Mustermann, Klaus 98 9 2 Test, Willi 98 10 107 108 null 3 Probe, Hugo 96 0 4 Versuch, Dieter 95 0 96 95 null Ich hoffe das die Darstellung so verständlich ist. Nochmals Danke für Deine Unterstützung Gruß Skaletti. Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 14. November 2014 Melden Teilen Geschrieben 14. November 2014 Poste doch mal wenigstens ein Tabellenerstellungsscript, das hilft beim nachvollziehen ungemein, Danke. Wird denn die Spalte Expr1 nicht dargestellt? Rechtsklick auf die Tabelle im SQL Server Manager > Script für Tabelle als > CREATE. Den Inhalt hier posten. BTW: Summenfelder bzw. berechnete Felder solltest Du in Tabellen vermeiden, die Berechnungszeit ist zu vernachlässigen. Also besser die Summe nur on-the-fly berechnen lassen. Hier ein Beispiel für formatierten SQL-Code: SELECT Startnummer1, Gegner1, Ergebnis1, Stechen1, Startnummer2, Gegner2, Ergebnis2, Stechen2, Sieger, Ergebnis1 + Stechen1 AS Sum1, Ergebnis2 + Stechen2 AS Sum2, CASE WHEN Sum1 > Sum2 THEN Gegner1 WHEN Sum2 > Sum1 THEN Gegner2 END AS Expr1 FROM dbo.Durchgang_1_VP Zitieren Link zu diesem Kommentar
Skaletti 0 Geschrieben 14. November 2014 Autor Melden Teilen Geschrieben 14. November 2014 Hallo Sunny61, Ich hoffe das ist richtig so. Die Spalte Expr1 ist dargestellt. USE [DataBaseVereinspokal]GO /****** Object: Table [dbo].[Durchgang_1_VP] Script Date: 11/14/2014 11:20:46 ******/SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO CREATE TABLE [dbo].[Durchgang_1_VP]( [startnummer1] [numeric](18, 0) NOT NULL, [Gegner1] [nvarchar](50) NULL, [Ergebnis1] [numeric](18, 0) NULL, [stechen1] [numeric](18, 0) NULL, [startnummer2] [numeric](18, 0) NULL, [Gegner2] [nvarchar](50) NULL, [Ergebnis2] [numeric](18, 0) NULL, [stechen2] [numeric](18, 0) NULL, [sum1] [numeric](18, 0) NULL, [sum2] [numeric](18, 0) NULL, [sieger] [nvarchar](50) NULL, CONSTRAINT [PK_1. Durchgang VP] PRIMARY KEY CLUSTERED( [startnummer1] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 14. November 2014 Melden Teilen Geschrieben 14. November 2014 (bearbeitet) So funktioniert es wie gewünscht: SELECT Startnummer1, Gegner1, Ergebnis1, Stechen1, Startnummer2, Gegner2, Ergebnis2, Stechen2, Ergebnis1 + Stechen1 AS SummeGegner1, Ergebnis2 + Stechen2 AS SummeGegner2, CASE WHEN Ergebnis1 + Stechen1 > Ergebnis2 + Stechen2 THEN Gegner1 WHEN Ergebnis2 + Stechen2 > Ergebnis1 + Stechen1 THEN Gegner2 END AS Sieger FROM dbo.Durchgang_1_VP Die Spalten SummeGegner1, SummeGegner2 und Sieger brauchst Du in der Tabelle nicht, denn es wird beim Aufruf der View immer neu berechnet. So hast Du in der Ansicht immer aktuelle Endergebnisse. EDIT: Ergebnis: Startnummer1 Gegner1 Ergebnis1 Stechen1 Startnummer2 Gegner2 Ergebnis2 Stechen2 SummeGegner1 SummeGegner2 Sieger 1 Mustermann, Klaus 98 9 2 Test, Willi 98 10 107 108 Test, Willi 2 Probe, Hugo 96 0 4 Versuch, Dieter 95 0 96 95 Probe, Hugo bearbeitet 14. November 2014 von Sunny61 Zitieren Link zu diesem Kommentar
Skaletti 0 Geschrieben 14. November 2014 Autor Melden Teilen Geschrieben 14. November 2014 Hallo Sunny61, vielen Dank für Deine Mühe und Hilfe. Habe dadurch wieder sehr viel gelernt. Werde mir das mit dem Formatieren merken. Ist dann viel übersichtlicher. Es funzt prima so. Gruß Skaletti! Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 14. November 2014 Melden Teilen Geschrieben 14. November 2014 vielen Dank für Deine Mühe und Hilfe. Bitte, gern geschehen. ;) Habe dadurch wieder sehr viel gelernt. Werde mir das mit dem Formatieren merken. Ist dann viel übersichtlicher. Es funzt prima so. Die Formatierung ist in den Abfragen vom SQL Server wichtig, innerhalb der VIEWS nutzt das leider wenig. Aber du solltest eh auf Stored Procedures umstellen. ;) Und nimm die Summenfelder aus der Tabelle, sind flüssiger als Wasser! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.