【发布时间】:2014-01-14 09:42:55
【问题描述】:
我在创建临时表时遇到了 round 函数的问题。 (好吧,我认为这就是问题所在)
下面列表中的“EntryGauge”列需要根据数据库中的另一个值(不同的表)进行缩放和舍入。
我认为有 2 个查询可以用作子查询来检索比例因子和舍入精度值。当我尝试使用它们时(如下面的查询所示)出现此错误:
“SQL 错误 (1166): 列名不正确 'ROUND(EntryGauge * (SELECT DisplayScaleFactor FROM webreportparametersetup WHERE MachineIdent = 'Mac'”
我不确定问题是什么,或者我是否正确使用了子查询,但我真的可以使用一些帮助!
DROP TEMPORARY TABLE IF EXISTS LiveFeed;
CREATE TEMPORARY TABLE LiveFeed AS
(
SELECT
MachineIdent,
CoilID,
DATE_FORMAT(StartTime, '%b %d %Y %h:%i %p'),
DATE_FORMAT(EndTime, '%b %d %Y %h:%i %p'),
TIMEDIFF(EndTime, StartTime),
Alloy,
ROUND(EntryGauge * (SELECT DisplayScaleFactor FROM webreportparametersetup WHERE MachineIdent = 'MachineIdent' AND ItemName = 'EntryGauge'), (SELECT DisplayPrecision FROM webreportparametersetup WHERE MachineIdent = 'MachineIdent' AND ItemName = 'EntryGauge')),
ExitGauge,
EntryWidth,
ExitWidth,
CoilDiameter,
CoilLength
FROM Coil
INNER JOIN CoilPass
ON Coil.CoilIdent=CoilPass.CoilIdent
INNER JOIN PassSection
ON CoilPass.PassIdent=PassSection.PassIdent
WHERE PassSection.SectionIdent IN('7965','7966','7967')
);
编辑:只是为了清楚计算需要是什么样子:
Round(EntryGauge * ScaleFactor, RoundingPrecision)
【问题讨论】:
-
1.这些列是否真的存在? 2.尝试使用后命名列。
ROUND(EntryGauge * (SELECT DisplayScaleFactor FROM webreportparametersetup WHERE MachineIdent = 'MachineIdent' AND ItemName = 'EntryGauge'), (SELECT DisplayPrecision FROM webreportparametersetup WHERE MachineIdent = 'MachineIdent' AND ItemName = 'EntryGauge')) AS EntryGagesRounded, -
能否在 ROUND 函数中单独运行子查询,以确认它们是否正确?
-
谢谢,解决了主要问题!
标签: mysql