0

我正在尝试在周末日期之前从数据库中整理出值。我在 7 个数据库中的 6 个上使用函数的脚本(它们的构造都相同)。第 7 个数据库不起作用。我得到表达式太复杂的错误。任何帮助找出原因?

这是我的代码:

 SELECT UPC_Test.Type, 
        UPC_Test.[Model No], 
        UPC_Test.[Model Desc], 
        UPC_Test.[Serial No], 
        Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy") AS [Test Date], 
        UPC_Test.Parameter, 
        UPC_Test.[Failure Symptom], 
        UPC_Test.[Repair Action], 
        UPC_Test.[Factory Select], 
        UPC_Test.[Test Station]
FROM UPC_Test
GROUP BY UPC_Test.Type, 
         UPC_Test.[Model No], 
         UPC_Test.[Model Desc], 
         UPC_Test.[Serial No], 
         Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy"), 
         UPC_Test.Parameter, 
         UPC_Test.[Failure Symptom], 
         UPC_Test.[Repair Action], 
         UPC_Test.[Factory Select], 
         UPC_Test.[Test Station]
HAVING (((UPC_Test.Type)="Production") 
AND ((Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy"))=[Enter]) 
AND ((UPC_Test.[Failure Symptom])<>"") 
AND ((UPC_Test.[Repair Action])<>"") 
AND ((UPC_Test.[Test Station])="UPC RF Test"))
ORDER BY Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy");
4

2 回答 2

1

当您在选择行中有聚合列时使用 group by 子句 - 例如 sum、count。我看不到你有任何 - 这用于限制返回的行

因此,您可以摆脱 group by - 它使用聚合列整理查询 - 并将 have 变成 where 子句。

它被认为是非常糟糕的做法,在您的字段名称中有空格并且会多次返回咬您 - 这需要更改数据库架构

我已经添加了查询更改(未经测试我无权访问)

   SELECT UPC_Test.Type, 
    UPC_Test.[Model No], 
    UPC_Test.[Model Desc], 
    UPC_Test.[Serial No], 
    Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[Test Date],0)),"m/d/yyyy") AS [Test Date], 
    UPC_Test.Parameter, 
    UPC_Test.[Failure Symptom], 
    UPC_Test.[Repair Action], 
    UPC_Test.[Factory Select], 
    UPC_Test.[Test Station]
 FROM UPC_Test
     WHERE (((UPC_Test.Type)="Production") 
     AND ((Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[TestDate],0)),"m/d/yyyy"))=[Enter]) 
     AND ((UPC_Test.[Failure Symptom])<>"") 
     AND ((UPC_Test.[Repair Action])<>"") 
     AND ((UPC_Test.[Test Station])="UPC RF Test"))
     ORDER BY Format(DateValue([UPC_Test].[Test Date]+7-Weekday([UPC_Test].[TestDate],0)),"m/d/yyyy");
于 2013-06-28T22:13:15.050 回答
0

尝试减少您的查询和返回的字段,以便您可以消除其中不会导致任何问题的部分。如果您能分辨出是什么导致了错误,那么您就更接近于知道是什么导致了错误。

我会仔细研究计算的字段和限制,因为可能有一段错误的数据导致它未定义(例如将 2013 年 2 月 30 日格式化为日期)。

还可以尝试使用第 7 个数据库中的数据子集,以追踪是否存在一些不良数据。制作数据库副本,确保发生错误。删除前一半的记录,看看是否还会出现。如果没有,请获取另一个副本并仅使用第二半数据进行尝试。如果它失败了一半而不是另一半,那么很可能是数据,所以再次开始删除一半以追踪它。

于 2013-06-28T22:58:12.083 回答