Domanda

Ho molte tabelle nel mio database e sto raccogliendo valori calcolati con il seguente codice e vorrei inserire tali valori in un'altra tabella.Sto usando Seleziona in Metodo Ma il database mi dice che " Sintassi errata vicino alla parola chiave in linea ..." .Credo che ci sia qualcosa che mi manca ma non so dove.Il codice sembra bene.Ecco il mio codice.Qualsiasi aiuto sarebbe apprezzato.

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, ho usato inserire in sintassi, tutto sta andando bene, ma ora ho problemi con DateTime.Quando ho usato il seguente comando SQL, ricevo errori e dice "Impossibile convertire il bit di tipo dati su DateTime" Ho provato il metodo di cast di Martin, ma è lo stesso.

Il mio codice è

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;
.

È stato utile?

Soluzione

NB: la risposta seguente è stata scritta assumendo SQL Server. L'ho cancellato quando ricevo il chiarimento del Vistadb, ma lo ha indeletato di nuovo su Lettura

.

VistaDB può essere pensato come sottoinsieme di Microsoft SQL Server T-SQL. Tutto di La nostra sintassi è supportata in SQL Server, Ma non il contrario intorno a

In tal caso presumo che sia sicuro dire che se non è valido in SQL Server, anche in VistaDB non sarà valido? Questa è la sintassi non valida in SQL Server.

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

Qual è lo scopo di questo pezzo di codice? Significa essere un booleano? (cioè restituire true quando la colonna corrisponde alla variabile). Se è così in SQL Server il più vicino a quello sarebbe questo.

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

Modifica Dai commenti che vedo è destinato a essere

SELECT @enddate AS 'Date'
.

Inoltre non vedo SELECT ... INTO elencato come comando VistaDB qui. È sicuramente supportato?

Altri suggerimenti

Se si utilizza SQL Server, Insert Into è di più per l'inserimento in una tabella creata al volo.È un modo giusto di fare cose, ma se il tavolo esiste già allora vorrei usare questo:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top