【问题标题】:Large Sql-server query error大型 Sql-server 查询错误
【发布时间】:2015-01-12 16:48:17
【问题描述】:

我有一个相当大的 sql-srv 查询,在我添加第二个外部应用之前它一直有效,现在我不知道如何修复它,这里是查询。

SELECT     Qualitycontrol.ID, Qualitycontrol.MachineNo, Qualitycontrol.Description,        Qualitycontrol.CreatedTime, Qualitycontrol.ProductCode, Qualitycontrol.WorkOrder, 
          Qualitycontrol.Quantity, Qualitycontrol.ControllerID ,Qc.Comment, Qc.Reason, Qualitycontrol.FirstOffOverride
FROM         Qualitycontrol 
OUTER APPLY (
SELECT TOP 1 *
FROM QualityControl_Comments
WHERE Qualitycontrol.ID = QualityControl_Comments.QCUID
ORDER BY Qualitycontrol.ID DESC -- whatevet defines order in QualityControl_Comments
) AS Qc 

OUTER APPLY (
SELECT  top 1   ReaderData.ReaderTime, LEFT(controller_scrap_details.personal_info, 4) AS name,      ReaderData.ReaderDate
FROM         controller_scrap_details INNER JOIN
                  ReaderData ON controller_scrap_details.card_id = ReaderData.CardID
WHERE     controller_scrap_details.password = '1111'  AND ReaderData.controllerID =  Qualitycontrol.ControllerID AND ReaderData.dtReading BETWEEN DATEADD(DAY, - 1, CAST(GETDATE() AS  DATE)) AND DATEADD(DAY, 1, 
                  CAST(GETDATE() AS DATE)))
) AS firstoff  

INNER JOIN 
(
SELECT Qualitycontrol.MachineNo, MAX(Qualitycontrol.ID) MID
FROM Qualitycontrol
GROUP BY Qualitycontrol.MachineNo
) UNQ ON UNQ.MID = Qualitycontrol.ID
WHERE     (Qualitycontrol.CreatedTime BETWEEN CAST(GETDATE() AS DATE) AND DATEADD(DAY, 1,     CAST(GETDATE() AS DATE)))
ORDER BY Qualitycontrol.MachineNo

【问题讨论】:

  • 错误是什么?预期的结果是什么?您能否格式化您的查询,使其更具可读性?

标签: php sql-server


【解决方案1】:

你在第二个Outer apply多了一个closing parenthesis

.....
OUTER APPLY (
SELECT  TOP 1   ReaderData.ReaderTime, LEFT(controller_scrap_details.personal_info, 4) AS NAME,      ReaderData.ReaderDate
FROM         controller_scrap_details INNER JOIN
                  ReaderData ON controller_scrap_details.card_id = ReaderData.CardID
WHERE     controller_scrap_details.password = '1111'  AND ReaderData.controllerID =  
Qualitycontrol.ControllerID AND 
ReaderData.dtReading BETWEEN Dateadd(DAY, - 1, Cast(Getdate() AS  DATE)) AND Dateadd(DAY, 1,
                  Cast(Getdate() AS DATE)))
 --) extra parenthesis remove this
 AS firstoff
 ....

【讨论】:

  • 哇,这么简单的huu,不敢相信我错过了非常感谢你
猜你喜欢
  • 2015-04-22
  • 1970-01-01
  • 2013-11-03
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多