Frage

Ich habe viele Tabellen in meiner Datenbank und sammle berechnete Werte mit dem folgenden Code und möchte diese Werte in eine andere Tabelle einfügen.Ich verwende die SELECT INTO-Methode, aber die Datenbank sagt mir, dass „Falsche Syntax in der Nähe der Schlüsselwort-INTO-Zeile ...“.Ich glaube, dass mir etwas fehlt, aber ich weiß nicht, wo.Code sieht gut aus.Hier ist mein Code.Jede Hilfe wäre dankbar.

SELECT (second.[cdate]=@enddate) AS 'Date', first.[machine_no] AS 'No', 
tbl_machines.[manufacturer] As 'Manufacturer',
tbl_machines.[type] As 'Machine Type',tbl_machines.[game_name] AS 'Game Name',
tbl_machines.[accounting_denomination] AS 'Denom', 
(second.[turnover])-(first.[turnover]) AS 'Turnover',
(second.[total win])-(first.[total win]) AS 'Total win',
(second.[games played])-(first.[games played]) AS 'Games Played',
(second.[Bill in])-(first.[Bill in]) AS 'Bill In', 
(second.[credit in])-(first.[credit in]) AS 'Credit IN', 
(second.[cancel credit])-(first.[cancel credit]) AS 'Cancel Credit',
tbl_rate.[euro] AS 'euro rate',
tbl_rate.[dollar] AS 'dollar rate' 
INTO  tbl_daily
FROM tbl.meter first,tbl.machines,tbl_rate  
INNER JOIN tbl_meter second ON first.[Machine_No] = second.[Machine_No] 
AND 
tbl_machines.[local_no]=first.[machine_no]
WHERE first.[cDate] = @StartDate 
AND second.[cDate] = @EndDate 
AND tbl_rate.[cdate]=@enddate;

Ok, ich habe die INSERT INTO-Syntax verwendet, alles läuft gut, aber jetzt habe ich ein Problem mit Datum/Uhrzeit.Wenn ich den folgenden SQL-Befehl verwende, erhalte ich die Fehlermeldung „Datentypbit kann nicht in Datum/Uhrzeit konvertiert werden“. Ich habe Martins Cast-Methode ausprobiert, aber es ist dasselbe.

Mein Code ist

INSERT INTO tbl_daily SELECT tbl_machines.[ID] AS 'ID', (second.[cdate]=@enddate) AS 'CDate', first.[machine_no] AS 'No',
 tbl_machines.[manufacturer] As 'Manufacturer',
tbl_machines.[type] As 'MachineType',
tbl_machines.[game_name] AS 'GameName',
tbl_machines.[accounting_denomination] AS 'Denom', 
(second.[turnover]-first.[turnover]) AS 'Turnover',
(second.[total win]-first.[total win]) AS 'Totalwin',
 (second.[games played]-first.[games played]) AS 'GamesPlayed', 
(second.[credit in]-first.[credit in]) AS 'CreditIN',
 (second.[Bill in]-first.[Bill in]) AS 'BillIn', 
 (second.[cancel credit]-first.[cancel credit]) AS 'CancelCredit',
tbl_rate.[euro] AS 'eurorate',
tbl_rate.[dollar] AS 'dollarrate' 
 FROM tbl_meter first,tbl_machines,tbl_rate 
INNER JOIN tbl_meter second ON first.[Machine_No] = second.[Machine_No] AND tbl_machines.[local_no]=first.[machine_no] 
WHERE first.[cDate] = @StartDate AND second.[cDate] = @EndDate AND tbl_rate.[cdate]=@enddate;
War es hilfreich?

Lösung

nb: Unter der Antwort wurde der SQL-Server angenommen. Ich habe es gelöscht, wenn ich die Erhalt der Vistadb-Klarstellung erhielt, aber wieder aufgetaucht ist, auf das Lesen das

Vistadb kann als Teilmenge betrachtet werden von Microsoft SQL Server T-SQL. Alle Unsere Syntax wird in SQL Server unterstützt, aber nicht umgekehrt um

In diesem Fall gehe ich davon aus, dass es sicher ist, dass, wenn es in SQL Server ungültig ist, in VistAdb auch in VistAdb ungültig ist? Dies ist eine ungültige Syntax in SQL Server.

generasacodicetagpre.

Was ist der Zweck dieses Bits des Codes? Soll es ein boolean sein? (d. H. Return true, wenn die Spalte mit der Variablen entspricht). Wenn ja, in SQL Server wäre das am nächsten, das wäre das.

generasacodicetagpre.

bearbeiten aus den Kommentaren, die ich sehe, soll es sein, dass es

ist generasacodicetagpre.

Außerdem sehe ich nicht generakodicetagcode als Vistadb-Befehl hier. Ist es definitiv unterstützt?

Andere Tipps

Wenn Sie SQL Server verwenden, Insert Into ist eher zum Einfügen in eine Tabelle gedacht, die im laufenden Betrieb erstellt wird.Es ist eine gute Vorgehensweise, aber wenn die Tabelle bereits existiert, würde ich Folgendes verwenden:

INSERT INTO table (column1, columns2, ...)
SELECT
  Value1,
  Value2,
  ...
FROM ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top