2015-01-12 7 views
0

다른 임시 테이블에 하위 쿼리 결과를 삽입하려고합니다. SubQuery는 하위 쿼리로 만 실행할 때 잘 작동하지만 하위 쿼리로는 작동하지 않습니다. 구문 오류가 발생합니다. 오류 : ')'근처의 구문이 잘못되었습니다. 그것은 구문에 가입 된 혼합하지 마십시오, 하위 쿼리하위 쿼리가 제대로 작동하지 않습니다.

DECLARE @TempT TABLE 
    (
     RowID INT IDENTITY(1, 1) , 
     Date DATETIME , 
     Type NVARCHAR(MAX) , 
     V_No INT , 
     Chq_No INT , 
     Description NVARCHAR(MAX) , 
     Debit MONEY , 
     Credit MONEY , 
     voucher_type_no INT , 
     status NVARCHAR(10) , 
     Clr_Date DATETIME , 
     Voucher_Id INT , 
     Party_Name NVARCHAR(MAX) , 
     DateYYYYMMDD DATETIME 
    ) 

DECLARE @i INT= 1 
INSERT INTO @TempT 
     SELECT * 
     FROM (SELECT v.date 'Date' , 
          vt.voucher_type_shortname 'Type' , 
          v.voucher_no 'V_No' , 
          v.cheque_no 'Chq_No' , 
          a.account_name 'Description' , 
          (CASE WHEN SUM(v.amount) > 0 THEN SUM(v.amount) 
            ELSE 0 
           END) Debit , 
          (CASE WHEN SUM(v.amount) < 0 THEN SUM(-v.amount) 
            ELSE 0 
           END) Credit , 
          v.voucher_type_no , 
          r.status , 
          r.recon_date 'Clr_Date' , 
          MIN(v.voucher_id) Voucher_Id , 
          '' 'Party_Name' , 
          CONVERT(VARCHAR(10), r.recon_date, 126) 'Date YYYY-MM-DD' 
        FROM  voucher v 
          LEFT OUTER JOIN reconcilation r ON v.voucher_id = r.voucher_id 
          LEFT OUTER JOIN account a ON v.other_acno = a.account_no , 
          voucher_type vt 
        WHERE  v.voucher_type_no = vt.voucher_type_no 
          AND v.voucher_type_no > 0 
          AND v.other_acno = a.account_no 
          AND v.acc_year = 51 
          AND v.account_no = 10030 
          AND R.recon_date <= '2015-01-12' 
          AND R.recon_date >= '2009-04-01' 
          AND V.posted IN (1, 2) 
        GROUP BY v.voucher_no , 
          v.cheque_no , 
          v.date , 
          vt.voucher_type_shortname , 
          a.account_name , 
          v.voucher_type_no , 
          r.status , 
          r.recon_date 
       ) 
+0

한 의견 후에 별명을 사용의 첫 번째 줄에 (T1, T2에서 ... 선택), 그리고 새로운 JOIN 구문은 너무 혼란 스럽습니다. – jarlh

답변

2

지난 브래킷

DECLARE @TempT TABLE 
    (
     RowID INT IDENTITY(1, 1) , 
     Date DATETIME , 
     Type NVARCHAR(MAX) , 
     V_No INT , 
     Chq_No INT , 
     Description NVARCHAR(MAX) , 
     Debit MONEY , 
     Credit MONEY , 
     voucher_type_no INT , 
     status NVARCHAR(10) , 
     Clr_Date DATETIME , 
     Voucher_Id INT , 
     Party_Name NVARCHAR(MAX) , 
     DateYYYYMMDD DATETIME 
    ) 

DECLARE @i INT= 1 
INSERT INTO @TempT 
     SELECT * 
     FROM (SELECT v.date 'Date' , 
          vt.voucher_type_shortname 'Type' , 
          v.voucher_no 'V_No' , 
          v.cheque_no 'Chq_No' , 
          a.account_name 'Description' , 
          (CASE WHEN SUM(v.amount) > 0 THEN SUM(v.amount) 
            ELSE 0 
           END) Debit , 
          (CASE WHEN SUM(v.amount) < 0 THEN SUM(-v.amount) 
            ELSE 0 
           END) Credit , 
          v.voucher_type_no , 
          r.status , 
          r.recon_date 'Clr_Date' , 
          MIN(v.voucher_id) Voucher_Id , 
          '' 'Party_Name' , 
          CONVERT(VARCHAR(10), r.recon_date, 126) 'Date YYYY-MM-DD' 
        FROM  voucher v 
          LEFT OUTER JOIN reconcilation r ON v.voucher_id = r.voucher_id 
          LEFT OUTER JOIN account a ON v.other_acno = a.account_no , 
          voucher_type vt 
        WHERE  v.voucher_type_no = vt.voucher_type_no 
          AND v.voucher_type_no > 0 
          AND v.other_acno = a.account_no 
          AND v.acc_year = 51 
          AND v.account_no = 10030 
          AND R.recon_date <= '2015-01-12' 
          AND R.recon_date >= '2009-04-01' 
          AND V.posted IN (1, 2) 
        GROUP BY v.voucher_no , 
          v.cheque_no , 
          v.date , 
          vt.voucher_type_shortname , 
          a.account_name , 
          v.voucher_type_no , 
          r.status , 
          r.recon_date 
       ) TAB 
+0

고마워, 내 잘못, 그 부분을 건너 뛰었습니다. 때로는 단순한 것을 지적하는 데 다른 사람이 필요합니다. –

관련 문제