Sql server 在子查询中使用主查询结果的SQL存储过程
我已经为我的Crystal Reports创建了一个存储过程。它还不起作用,我还不知道如何解决这个问题。。这是我的疑问:Sql server 在子查询中使用主查询结果的SQL存储过程,sql-server,crystal-reports,Sql Server,Crystal Reports,我已经为我的Crystal Reports创建了一个存储过程。它还不起作用,我还不知道如何解决这个问题。。这是我的疑问: use [fmsAir]; WITH Main AS ( SELECT [File].[FileNumber], [CostRevenue].[COSTAMOUNT], [CostRevenue].[RevenueAmount], [File].[FileDate], [CostRevenue].[REVENUERATE], [CostRevenue].[CostR
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
现在是我使用where的部分,然后是Main。。它不起作用,因为这不是你可以使用它的方式,但我也不知道如何正确使用它。有人能帮我做这件事吗
以下是错误:
Msg 4104,第16级,状态1,第16行
无法绑定多部分标识符“Main.File.RELATIONCODE”。
Msg 4104,16级,状态1,第21行-多部分标识符
无法绑定“Main.CostRevenue.CRNUMBER”。味精4104,16级,
状态1,第26行多部分标识符“Main.CostRevenue.CRNUMBER”
无法约束。Msg 4104,16级,状态1,第31行
无法找到多部分标识符“Main.CostRevenue.COSTRELATIONCODE”
束缚
提前谢谢你 尝试在cte表达式中创建列名,并在下面提到的cte中使用该列名。
我希望这将有助于如果只从第一个cte表中获取结果,为什么要使用4 cte。错误是什么?这与MySQL有什么关系?使用cte,您不需要引用源表。Main.[CostRevenue]。[CRNUMBER]应该是的Main.[CRNUMBER]example@vice这也不起作用…:这是一样的。它无法绑定…这不起作用。。。我所有的列名都是这样的:Main([FileNumber]、[COSTAMOUNT]、[RevenueAmount]、[FileDate]、[REVENUERATE]、[CostRate]、[REVENUECURRENCY]、[COMPANY]、[CRNUMBER]、[IINVOICENUMBER]、[RELATIONCODE]、[COSTRELATIONCODE]、[REVENUEDESCRIPTION])作为(最后,我想从所有的cte中提取。当我们有一些重复的列名时,通常会发生此错误,因为上面cte的列名和派生cte的列名完全匹配。