Question

J'ai beaucoup de tables dans ma base de données et je suis la collecte des valeurs calculées avec le code suivant et souhaitez Insérer ces valeurs dans une autre table.Je suis à l'Aide de SELECT SUR cette méthode mais la base de données me dit que "Syntaxe incorrecte près du mot clé DANS la ligne de ...".Je crois qu'il y a quelque chose que je suis absent, mais vous ne savez pas où.Code semble correct.Voici mon code.Toute aide serait appréciée.

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, j'ai utilisé les INSÉRER DANS la syntaxe, tout va bien, mais maintenant j'ai un problème avec datetime.Lorsque j'ai utilisé la commande sql suivante je reçois l'erreur et il me dit "Impossible de convertir le type de données bit de type datetime" j'ai essayé de Martin plâtre de méthode, mais c'est de même.

Mon code est

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;
Était-ce utile?

La solution

NB:Ci-dessous la réponse a été écrit en supposant que SQL Server.Je l'ai supprimé lors de la réception de la VistaDB des éclaircissements, mais ont récupéré de nouveau sur la lecture que

VistaDB peut être considéré comme un sous-ensemble de Serveur de Microsoft SQL, T-SQL.Tous notre syntaxe est pris en charge dans SQL Server, mais pas dans l'autre sens

Dans ce cas, je suppose qu'il est sûr de dire que si elle n'est pas valide dans SQL Server, il ne sera pas valide dans VistaDB aussi?Ce n'est pas valide la syntaxe de SQL Server.

SELECT (second.[cdate]=@enddate) AS 'Date'

Quel est le but de ce morceau de code?Est-il destiné à être un booléen?(c'est à direretourne true lorsque la colonne correspond à la variable).Si donc, dans SQL Serveur le plus proche pour que ne serait-ce.

SELECT CAST((CASE WHEN second.[cdate]=@enddate THEN 1 ELSE 0 END) AS BIT) AS 'Date'

Modifier D'après les commentaires, je vois qu'il est destiné à être

SELECT @enddate AS 'Date'

En outre, je ne vois pas SELECT ... INTO répertorié comme un VistaDB commande ici.Est-il vraiment pris en charge?

Autres conseils

Si vous utilisez SQL Server, Insert Into est plus pour insérer dans une table créée à la volée.C'est une bonne façon de faire des choses, mais si la table existe déjà, j'utiliserais ceci:

INSERT INTO table (column1, columns2, ...)
SELECT
  Value1,
  Value2,
  ...
FROM ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top