2017-02-06 12 views
0

Crystal Reports用に作成されたストアドプロシージャがあります。今サブクエリのメインクエリの結果を使用したSQLストアドプロシージャ

use [fmsAir]; 
WITH Main AS (
    SELECT [File].[FileNumber], [CostRevenue].[COSTAMOUNT], [CostRevenue].[RevenueAmount], [File].[FileDate], [CostRevenue].[REVENUERATE], [CostRevenue].[CostRate], [CostRevenue].[REVENUECURRENCY], 
      [File].[COMPANY], [CostRevenue].[CRNUMBER], [CostRevenue].[IINVOICENUMBER], [File].[RELATIONCODE], [CostRevenue].[COSTRELATIONCODE], [CostRevenue].[REVENUEDESCRIPTION] 
    FROM  
      [fmsAir].[dbo].[File] 
    INNER JOIN 
      [fmsAir].[dbo].[CostRevenue] ON [File].[FILENUMBER] = [CostRevenue].FILENUMBER 
    WHERE 
      [File].[FILEDATE] BETWEEN '2016-08-01 00:00:00' AND '2018-01-20 00:00:00' AND 
      [File].[FILENUMBER] > 500 
), 
Relation AS (
    SELECT [Relation].[Companyname], [Relation].[RELATIONCODE] 
    FROM [fms].[dbo].[Relation] 
    WHERE [Relation].[Relationcode] = Main.[File].[RELATIONCODE] 
), 
OutgoingInvoiceLine AS (
    SELECT [OutgoingInvoiceLine].[AMOUNT], [OutgoingInvoiceLine].[RATE], [OutgoingInvoiceLine].[Currency], [OutgoingInvoiceLine].[CRNUMBER] 
    FROM [fmsAir].[dbo].[OutgoingInvoiceLine] 
    WHERE [OutgoingInvoiceLine].[CRNUMBER] = Main.[CostRevenue].[CRNUMBER] 
), 
IncomingInvoiceLine AS (
    SELECT [IncomingInvoiceLine].[AMOUNT], [IncomingInvoiceLine].[RATE], [IncomingInvoiceLine].[CURRENCY], [IncomingInvoiceLine].[CRNUMBER] 
    FROM [fmsAir].[dbo].[IncomingInvoiceLine] 
    WHERE [IncomingInvoiceLine].[CRNUMBER] = Main.[CostRevenue].[CRNUMBER] 
), 
RelationCost AS (
    SELECT [Relation].[CompanyNAME], [Relation].[RelationCode] 
    FROM [fms].[dbo].[Relation] 
    WHERE Relation.RELATIONCODE = Main.[CostRevenue].[COSTRELATIONCODE] 
) 
SELECT main.FILENUMBER, main.COSTAMOUNT from Main 

私が使用して、メインの部分:これは私のクエリ..ですそれはまだ動作しませんし、私はこの問題を解決する方法についてのアイデアを持っていません。 それはあなたがそれを使用する方法ではないので動作しませんが、正しい方法で行う方法についてはわかりません。誰も私がこの仕事をするのを助けることができますか?

これらのエラーです:

メッセージ4104、レベル16、状態1、行16 マルチパート識別子 "Main.File.RELATIONCODEは、" バインドできませんでした。 メッセージ4104、レベル16、状態1、行21マルチパート識別子 "Main.CostRevenue.CRNUMBER"をバインドできませんでした。 Msg 4104、Level 16、 状態1、行26マルチパート識別子 "Main.CostRevenue.CRNUMBER" はバインドできませんでした。メッセージ4104、レベル16、状態1、行31 マルチパート識別子 "Main.CostRevenue.COSTRELATIONCODE"は にバインドできませんでした。

ありがとうございます!

+0

エラーは何ですか? – user5226582

+0

これはMySQLと何が関係していますか? – Strawberry

+0

CTEを使用すると、ソーステーブルを参照する必要はありません。 メイン。[CostRevenue]。[CRNUMBER]はメインで[CRNUMBER]、たとえば – vice

答えて

0

cte式に列名を作成し、その列名を下記のcteで使用してください。 これが助けてくれることを願っています。

+0

これは動作しません...私はこのようなすべての列名があります:メイン([FileNumber]、[COSTAMOUNT]、[RevenueAmount]、[FileDate]、[REVENUERATE]、[CostRate ]、[REVENUECURRENCY]、[COMPANY]、[CRNUMBER]、[IINVOICENUMBER]、[RELATIONCODE]、[COSTRELATIONCODE]、[REVENUESESCRIPTION])AS( –

0

最初のcteテーブルからのみ結果をフェッチしている場合、4 cteを使用する理由はなぜですか。

+0

)最後に、すべてから取得したい –

+0

このエラーは一般的に上記のcteの列名と重複する列名があり、派生cteの列名が正確に一致しているときに発生します。 –

関連する問題