我在我的数据库中有许多表,我用下面的代码收集计算值,并希望将这些值插入到其他表中。我使用SELECT INTO方法,但是数据库告诉我“不正确的语法靠近关键字到行.”。我相信有些东西我错过了,但不知道在哪里。密码看上去没问题。这是我的密码。任何帮助都将不胜感激。
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;
好的,我使用了INSERT语法,一切都进行得很顺利,但是现在我对日期时间有了问题。当我使用以下sql命令时,我得到了错误,它说“不能将数据类型位转换为日期时间”,我尝试了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;
发布于 2010-07-17 18:31:12
注意:下面的答案是假设Server编写的。当收到VistaDB澄清时,我删除了它,但是在阅读上又删除了
VistaDB可以看作是的一个子集.Server支持我们所有的语法,但不是相反
在这种情况下,我假设可以安全地说,如果它在Server中是无效的,那么它在VistaDB中也是无效的?这是Server中的无效语法。
SELECT (second.[cdate]=@enddate) AS 'Date'
这段代码的目的是什么?这意味着它是布尔型的吗?(即当列与变量匹配时返回true )。如果是的话,在Server中,最接近这一点的就是以下内容。
SELECT CAST((CASE WHEN second.[cdate]=@enddate THEN 1 ELSE 0 END) AS BIT) AS 'Date'
编辑了我看到的评论中的
SELECT @enddate AS 'Date'
此外,我在这里没有看到SELECT ... INTO
列为VistaDB命令。它肯定支持吗?
发布于 2010-07-17 18:38:52
如果您正在使用Server,则更多的是将Insert Into
插入到动态创建的表中。这是一种做事情的好方法,但如果表已经存在,那么我将使用以下方法:
INSERT INTO table (column1, columns2, ...)
SELECT
Value1,
Value2,
...
FROM ...
https://stackoverflow.com/questions/3272740
复制相似问题