문제

내 데이터베이스에 많은 테이블이 있고 다음 코드를 사용하여 계산된 값을 수집하고 있으며 해당 값을 다른 테이블에 삽입하고 싶습니다.SELECT INTO 메서드를 사용하고 있는데 데이터베이스에서 "키워드 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 INTO 구문을 사용했는데 모든 것이 잘 진행되고 있지만 이제 날짜/시간에 문제가 있습니다.다음 SQL 명령을 사용할 때 오류가 발생하고 "데이터 유형 비트를 날짜/시간으로 변환할 수 없습니다"라는 메시지가 표시됩니다. Martin의 캐스트 방법을 시도했지만 동일합니다.

내 코드는

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

이 코드의 비트의 목적은 무엇입니까? 부울이되는 것이 었습니까? (I.E. 열이 변수와 일치 할 때 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