-1

下面的视图在执行时运行良好,但是当我尝试在设计模式下打开它时,它返回一个解析错误:“解析 SQL 窗格的内容时遇到以下错误。”

FROM 子句中的错误:在“VALUES”附近。

FROM 子句中的错误:')' 附近。

无法解析查询文本。

SELECT
        CONCAT(q.QuotationNo, ' Rev  ', q.QuotRevNo) AS QNo
  , q.LastStatus AS Status
  , q.IsProject AS Type
  , CASE
        WHEN q.IsProject = 1
            THEN 'M'
        WHEN q.IsProject = 2
            THEN 'P'
            ELSE 'D'
    END AS [Product Type]
  , (SELECT
            MIN([Intake Date])
        FROM
            (VALUES
           (q.ORDate)
          ,(q.PIDate)
          ,(q.PODate)
          ,(q.SentTo)
          ,(q.OCDate)
          ,(q.ShipDate)
          ,(q.INVDate)
          ,(q.INVPaymentDate)) AS AllDate([Intake Date])) AS [Intake Date]
  , p.TotalOfItem   AS Sales
  , c.CompanyName   AS Customer
  , w.LastFirstName AS Contact
  , v.CompanyName   AS Vendor
FROM
    dbo.tblQuotations q
    INNER JOIN
        dbo.tblProducts p
        ON q.QuotationID = p.QuotationID
    LEFT OUTER JOIN
        dbo.tblCompany c
        ON c.CompanyID = q.CompanyID
    LEFT OUTER JOIN
        dbo.tblWContacts w
        ON q.QuotConID = w.ConID
    LEFT OUTER JOIN
        dbo.tblCompany v
        ON q.SupplierID = v.CompanyID
WHERE q.StatusCode IN (4, 5, 6, 7, 8, 9)

如何防止错误。 错误信息

4

1 回答 1

0

有根据地猜测这是 SQL Server,给定 [delimited aliases],您可以尝试将子查询替换为apply(). 一般来说,最好的建议是避开视觉设计师,它并不是特别强大。

这当然是未经测试的,但希望能传达这个想法:

select Concat(q.QuotationNo, ' Rev  ', q.QuotRevNo) as QNo
  , q.LastStatus as Status
  , q.IsProject as Type
  , case
        when q.IsProject = 1 then 'M'
        when q.IsProject = 2 then 'P'
    else 'D' end as [Product Type]
  , d.[intake date]
  , p.TotalOfItem   as Sales
  , c.CompanyName   as Customer
  , w.LastFirstName as Contact
  , v.CompanyName   as Vendor
from dbo.tblQuotations q
join dbo.tblProducts p on q.QuotationID = p.QuotationID
left join dbo.tblCompany c on c.CompanyID = q.CompanyID
left join dbo.tblWContacts w on q.QuotConID = w.ConID
left join dbo.tblCompany v on q.SupplierID = v.CompanyID
outer apply (
    select Min(d) as [intake date]
        from (values
           (q.ORDate)
          ,(q.PIDate)
          ,(q.PODate)
          ,(q.SentTo)
          ,(q.OCDate)
          ,(q.ShipDate)
          ,(q.INVDate)
          ,(q.INVPaymentDate))v(d)
)id
where q.StatusCode in (4, 5, 6, 7, 8, 9)
于 2022-01-16T13:11:44.310 回答