多部分标识符“”无法绑定sql server 2008

发布于 2024-12-28 16:50:04 字数 2727 浏览 3 评论 0原文

     With Vehicles As ( 
    Select Row_Number() Over (Order By Model.[Year] Desc, Vehicle.Msrp Asc, Vehicle.Id) As RowNumber 
        , Make.[Name] As Style_Model_Make_Name 
        , Model.[Name] As Style_Model_Name 
        , Model.[Year] As Style_Model_Year 
        , Style.Trim As Style_Trim
        , Style.[Name] As Style_Name 
        , Style.BodyType As Style_BodyType
        , Vehicle.CompanyId As Company_Id
        , Vehicle.Id
        , Vehicle.StyleId As Style_Id
        , Vehicle.[Status]
        , Vehicle.Vin
        , Vehicle.StockNumber
        , Vehicle.ModelCode
        , Vehicle.Mileage
        , Vehicle.InteriorColor
        , Vehicle.InteriorColorCode
        , Vehicle.ExteriorColor
        , Vehicle.ExteriorColorCode
        , Vehicle.Certification
        , Vehicle.Selling 
        , Vehicle.Internet
        , Vehicle.Special
        , Vehicle.Comment
        , Vehicle.IsNew
        , Vehicle.IsCertified
        , Vehicle.StockDate
From dbo.Vehicle (NoLock)
    Join dbo.Style (NoLock) On Style.Id = Vehicle.StyleId
    Left Join dbo.Engine ON dbo.Style.Id = dbo.Engine.StyleId 
    Inner Join dbo.Model on dbo.Model.Id = dbo.Style.ModelId
    Inner Join dbo.Make ON dbo.Model.MakeId = dbo.Make.Id ON dbo.Style.ModelId = dbo.Model.Id
Where Vehicle.CompanyId in (9) 
    And Vehicle._IsActive = 1 
    And DateDiff(day, Vehicle.StockDate, GetDate()) >= @DaysInStock 
    And Vehicle.Msrp Between @PriceMin And @PriceMax 
    And Vehicle.Mileage Between @MileageMin And @MileageMax  And Convert(int, Model.[Year]) Between @YearMin And @YearMax And Vehicle.IsNew = 1 )

Select Style_Model_Make_Name 
        , Style_Model_Name 
        , Style_Model_Year
        , Style_Id 
        , Style_Trim 
        , Style_Name 
        , Style_BodyType
        , Company_Id
        , Vehicle.Id
        , Vehicle.Vin
        , Vehicle.Mileage
        , Vehicle.StockNumber
        , Vehicle.ModelCode
        , Vehicle.InteriorColor
        , Vehicle.InteriorColorCode
        , Vehicle.ExteriorColor
        , Vehicle.ExteriorColorCode
        , Vehicle.Certification
        , Case When Vehicle.Msrp < @CallPrice Then 0 Else Vehicle.Msrp End As Msrp 
        , Case When Vehicle.Selling < @CallPrice Then 0 Else Vehicle.Selling End As Selling
        , Vehicle.Internet
        , Vehicle.Special
        , Vehicle.Comment
        , Vehicle.IsNew
        , Vehicle.IsCertified
        , Vehicle.StockDate 
    From Vehicles  
    Where RowNumber Between @StartRowIndex And (@StartRowIndex + @MaximumRows) - 1 

我是 sql server 的新手,正在尝试解决问题。 我正在尝试创建一个 CTE 来更轻松地选择不同的列。我认为我的 FROM 语句有问题,但我不确定到底出了什么问题。第二个 SELECT 语句中的所有列都有红色波形,它返回错误“多部分标识符”“无法绑定”错误。对如何解决这个问题有什么想法吗?

     With Vehicles As ( 
    Select Row_Number() Over (Order By Model.[Year] Desc, Vehicle.Msrp Asc, Vehicle.Id) As RowNumber 
        , Make.[Name] As Style_Model_Make_Name 
        , Model.[Name] As Style_Model_Name 
        , Model.[Year] As Style_Model_Year 
        , Style.Trim As Style_Trim
        , Style.[Name] As Style_Name 
        , Style.BodyType As Style_BodyType
        , Vehicle.CompanyId As Company_Id
        , Vehicle.Id
        , Vehicle.StyleId As Style_Id
        , Vehicle.[Status]
        , Vehicle.Vin
        , Vehicle.StockNumber
        , Vehicle.ModelCode
        , Vehicle.Mileage
        , Vehicle.InteriorColor
        , Vehicle.InteriorColorCode
        , Vehicle.ExteriorColor
        , Vehicle.ExteriorColorCode
        , Vehicle.Certification
        , Vehicle.Selling 
        , Vehicle.Internet
        , Vehicle.Special
        , Vehicle.Comment
        , Vehicle.IsNew
        , Vehicle.IsCertified
        , Vehicle.StockDate
From dbo.Vehicle (NoLock)
    Join dbo.Style (NoLock) On Style.Id = Vehicle.StyleId
    Left Join dbo.Engine ON dbo.Style.Id = dbo.Engine.StyleId 
    Inner Join dbo.Model on dbo.Model.Id = dbo.Style.ModelId
    Inner Join dbo.Make ON dbo.Model.MakeId = dbo.Make.Id ON dbo.Style.ModelId = dbo.Model.Id
Where Vehicle.CompanyId in (9) 
    And Vehicle._IsActive = 1 
    And DateDiff(day, Vehicle.StockDate, GetDate()) >= @DaysInStock 
    And Vehicle.Msrp Between @PriceMin And @PriceMax 
    And Vehicle.Mileage Between @MileageMin And @MileageMax  And Convert(int, Model.[Year]) Between @YearMin And @YearMax And Vehicle.IsNew = 1 )

Select Style_Model_Make_Name 
        , Style_Model_Name 
        , Style_Model_Year
        , Style_Id 
        , Style_Trim 
        , Style_Name 
        , Style_BodyType
        , Company_Id
        , Vehicle.Id
        , Vehicle.Vin
        , Vehicle.Mileage
        , Vehicle.StockNumber
        , Vehicle.ModelCode
        , Vehicle.InteriorColor
        , Vehicle.InteriorColorCode
        , Vehicle.ExteriorColor
        , Vehicle.ExteriorColorCode
        , Vehicle.Certification
        , Case When Vehicle.Msrp < @CallPrice Then 0 Else Vehicle.Msrp End As Msrp 
        , Case When Vehicle.Selling < @CallPrice Then 0 Else Vehicle.Selling End As Selling
        , Vehicle.Internet
        , Vehicle.Special
        , Vehicle.Comment
        , Vehicle.IsNew
        , Vehicle.IsCertified
        , Vehicle.StockDate 
    From Vehicles  
    Where RowNumber Between @StartRowIndex And (@StartRowIndex + @MaximumRows) - 1 

I am new to sql server and trying to figure things out.
I am trying to create a CTE to make selecting different columns easier. I assume there is something wrong with my FROM statement but I'm not sure what exactly is wrong. All the columns in the second SELECT statement have red sqiggles which return and error of "The multi-part identifer "" can not be bound" error. Have any ideas of how to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迟月 2025-01-04 16:50:04

从主 SELECT 的列名称中删除 Vehicle.

Select Style_Model_Make_Name 
            , Style_Model_Name 
            , Style_Model_Year
            , Style_Id 
            , Style_Trim 
            , Style_Name 
            , Style_BodyType
            , Company_Id
            , Vehicle.Id
            , Vehicle.Vin
            , Vehicle.Mileage
            , Vehicle.StockNumber
            , Vehicle.ModelCode
            , Vehicle.InteriorColor
            , Vehicle.InteriorColorCode
            , Vehicle.ExteriorColor
            , Vehicle.ExteriorColorCode
            , Vehicle.Certification
            , Case When Vehicle.Msrp < @CallPrice Then 0 Else Vehicle.Msrp End As Msrp 
            , Case When Vehicle.Selling < @CallPrice Then 0 Else Vehicle.Selling End As Selling
            , Vehicle.Internet
            , Vehicle.Special
            , Vehicle.Comment
            , Vehicle.IsNew
            , Vehicle.IsCertified
            , Vehicle.StockDate 
        From Vehicles  
        Where RowNumber Between @StartRowIndex And (@StartRowIndex + @MaximumRows) - 1 

Remove Vehicle. from column names in your main SELECT:

Select Style_Model_Make_Name 
            , Style_Model_Name 
            , Style_Model_Year
            , Style_Id 
            , Style_Trim 
            , Style_Name 
            , Style_BodyType
            , Company_Id
            , Vehicle.Id
            , Vehicle.Vin
            , Vehicle.Mileage
            , Vehicle.StockNumber
            , Vehicle.ModelCode
            , Vehicle.InteriorColor
            , Vehicle.InteriorColorCode
            , Vehicle.ExteriorColor
            , Vehicle.ExteriorColorCode
            , Vehicle.Certification
            , Case When Vehicle.Msrp < @CallPrice Then 0 Else Vehicle.Msrp End As Msrp 
            , Case When Vehicle.Selling < @CallPrice Then 0 Else Vehicle.Selling End As Selling
            , Vehicle.Internet
            , Vehicle.Special
            , Vehicle.Comment
            , Vehicle.IsNew
            , Vehicle.IsCertified
            , Vehicle.StockDate 
        From Vehicles  
        Where RowNumber Between @StartRowIndex And (@StartRowIndex + @MaximumRows) - 1 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文