我的数据库中有许多表,我正在收集使用以下代码的计算值,并希望将这些值插入其他表。我正在使用SELECT INOD方法,但数据库告诉我“在关键字附近的语法不正确...”。我相信我缺少的东西,但不确定在哪里。代码看起来很好。这是我的代码。任何帮助都会受到赞赏。

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


好的,我使用插入到语法中,一切顺利,但现在我有DateTime有问题。当我使用以下SQL命令时,我得到错误,它说“无法将数据类型位转换为DateTime”,我尝试了Martin的CAST方法,但它也是如此。

我的代码是

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

有帮助吗?

解决方案

nb:假设SQL Server写的以下答案。我在接收到vistadb澄清时删除了它,但在读取那里再次撤消它

vistadb可以被认为是一个子集 Microsoft SQL Server T-SQL。所有的 SQL Server支持我们的语法, 但不是其他方式

在这种情况下,我假设它可以安全地说,如果它在SQL Server中无效,它也会在Vistadb中无效?这在SQL Server中是无效的语法。

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

这一点代码的目的是什么?这意味着是一个布尔酒店吗? (即,当列与变量匹配时返回true)。如果是如此在SQL Server中最接近那就是这样。

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

编辑从注释我看到它旨在是

SELECT @enddate AS 'Date'
.

另外,我没有看到SELECT ... INTO 列为vistadb命令这里。它肯定支持吗?

其他提示

如果您使用的是SQL Server,Insert Into更像是插入瞬间创建的表中。这是一个好的做事方式,但如果表已经存在,那么我会使用这个:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top