2016-08-01 8 views
0

Ich arbeite im Finanzbereich eines Unternehmens und möchte Daten von unserem Server (SQL) extrahieren, um Berichte für Board zusammenzustellen.Excel Query - ungültige Anzahl der Parameter und ungültige Descriptor Index Fehler

Also habe ich mehrere Excel-Datei, wo ich Excel-Abfrage verwenden, um Daten zu retreive und Präsentationen zu machen.

Ich habe meine Abfragen aktualisiert und ein Hindernis mit dieser getroffen.

Es war die Arbeit mit diesem Stück Code fein: SELECT

INTERNAL_REFERENCE as ref, 
    CMP_CODE AS CMP_CODE, 
    COUNTERPARTY_CODE AS BANK_CODE, 
    TRANSACTION_CODE AS TRANS_CODE, 
    CAST(CONVERT(varchar(10), AMO_END_DATE, 110) AS datetime) AS DATE, 
    SUM([AMORTIZATION]) AS AMOUNT 
FROM 
    [SAGE_MTC_FRP].[dbo].[LOAN_SCHEDULE] inner join [SAGE_MTC_FRP].[dbo]. [LOANS] 
    on [SAGE_MTC_FRP].[dbo].[LOAN_SCHEDULE].LOAN_ID=[SAGE_MTC_FRP].[dbo]. [LOANS].LOAN_ID 
WHERE 
    (AMO_END_DATE>=?) AND (BOOK_DATE<?) AND 
    (TRANSACTION_CODE<>'CPCA' AND TRANSACTION_CODE<>'CPCF' AND TRANSACTION_CODE<>'RENT') AND 
    IS_DELETED=0 AND VERSION_NUMBER=1 AND CMP_CODE='MTG' 
GROUP BY 
    INTERNAL_REFERENCE, CMP_CODE, COUNTERPARTY_CODE, TRANSACTION_CODE,  AMO_END_DATE 

Aber wenn ich die gesamten Code mit der Union alle setzen, es bläst mit diesem 2x Fehler auf:

Problem: ungültig Anzahl der Parameter

ungültig Deskriptorindex

Code:

SELECT * FROM 


(
SELECT 

    INTERNAL_REFERENCE as ref, 
    CMP_CODE AS CMP_CODE, 
    COUNTERPARTY_CODE AS BANK_CODE, 
    TRANSACTION_CODE AS TRANS_CODE, 
    CAST(CONVERT(varchar(10), AMO_END_DATE, 110) AS datetime) AS DATE, 
    SUM([AMORTIZATION]) AS AMOUNT 
FROM 
    [SAGE_MTC_FRP].[dbo].[LOAN_SCHEDULE] inner join [SAGE_MTC_FRP].[dbo]. [LOANS] 
    on [SAGE_MTC_FRP].[dbo].[LOAN_SCHEDULE].LOAN_ID=[SAGE_MTC_FRP].[dbo]. [LOANS].LOAN_ID 
WHERE 
    (AMO_END_DATE>=?) AND (BOOK_DATE<?) AND 
    (TRANSACTION_CODE<>'CPCA' AND TRANSACTION_CODE<>'CPCF' AND TRANSACTION_CODE<>'RENT') AND 
    IS_DELETED=0 AND VERSION_NUMBER=1 AND CMP_CODE='MTG' 
GROUP BY 
    INTERNAL_REFERENCE, CMP_CODE, COUNTERPARTY_CODE, TRANSACTION_CODE,  AMO_END_DATE 

UNION ALL 

SELECT 
    CL_CODE as ref 
    ,LEFT([ACC_CODE] , 3) AS CMP_CODE 
    ,[COUNTERPARTY_CODE] AS BANK_CODE 
    ,RIGHT([CL_DESCRIPTION] , 3) AS TRANS_CODE 
    ,CAST(CONVERT(varchar(10), [END_DATE], 110) AS datetime) AS DATE 
    ,[CL_AMOUNT] AS AMOUNT 
FROM 
[SAGE_MTC_FRP].[dbo].[CREDIT_LINES] 
WHERE 
(END_DATE>?) AND 
RIGHT([CL_DESCRIPTION] , 3)='PPC' 
) AS DATA 
ORDER BY REF 

Antwort

0

Wenn beide Abfragen, die von dort selbst laufen, könnten Sie so etwas wie verwenden:

DECLARE @result TABLE(
[ref] NVARCHAR(50), 
[CMP_CODE] NVARCHAR(50), 
[BANK_CODE] NVARCHAR(50), 
[TRANS_CODE] NVARCHAR(50), 
[Date] DATE, 
[AMOUNT] DECIMAL(10,2) 
) 
INSERT INTO @result 
     (ref , 
      CMP_CODE , 
      BANK_CODE , 
      TRANS_CODE , 
      Date , 
      AMOUNT 
     ) 
SELECT 
     INTERNAL_REFERENCE as ref, 
     CMP_CODE AS CMP_CODE, 
     COUNTERPARTY_CODE AS BANK_CODE, 
     TRANSACTION_CODE AS TRANS_CODE, 
     CAST(CONVERT(varchar(10), AMO_END_DATE, 110) AS datetime) AS DATE, 
     SUM([AMORTIZATION]) AS AMOUNT 
FROM 
    [SAGE_MTC_FRP].[dbo].[LOAN_SCHEDULE] inner join [SAGE_MTC_FRP].[dbo]. [LOANS] 
    on [SAGE_MTC_FRP].[dbo].[LOAN_SCHEDULE].LOAN_ID=[SAGE_MTC_FRP].[dbo]. [LOANS].LOAN_ID 
WHERE 
    (AMO_END_DATE>=?) AND (BOOK_DATE<?) AND 
    (TRANSACTION_CODE<>'CPCA' AND TRANSACTION_CODE<>'CPCF' AND TRANSACTION_CODE<>'RENT') AND 
    IS_DELETED=0 AND VERSION_NUMBER=1 AND CMP_CODE='MTG' 
GROUP BY 
    INTERNAL_REFERENCE, CMP_CODE, COUNTERPARTY_CODE, TRANSACTION_CODE,  AMO_END_DATE 

INSERT INTO @result 
     (ref , 
      CMP_CODE , 
      BANK_CODE , 
      TRANS_CODE , 
      Date , 
      AMOUNT 
     ) 
SELECT 
    CL_CODE as ref 
    ,LEFT([ACC_CODE] , 3) AS CMP_CODE 
    ,[COUNTERPARTY_CODE] AS BANK_CODE 
    ,RIGHT([CL_DESCRIPTION] , 3) AS TRANS_CODE 
    ,CAST(CONVERT(varchar(10), [END_DATE], 110) AS datetime) AS DATE 
    ,[CL_AMOUNT] AS AMOUNT 
FROM 
[SAGE_MTC_FRP].[dbo].[CREDIT_LINES] 
WHERE 
(END_DATE>?) AND 
RIGHT([CL_DESCRIPTION] , 3)='PPC' 


SELECT * FROM @result ORDER BY ref 
Verwandte Themen