我有一个包含3列的表XYZ:
Environment Servers Databases
Dev 5 10
PROD 25 100
Test 9 10
TOTAL 39 120我想根据SERVER MAINTENANCE和TOTAL DATABASES的值向表中添加另外两列,称为TOTAL SERVERS和TOTAL DATABASES(可能是表中的计算列,这样,每当数据被添加到表中时,该列应该具有自动计算的值)。
发布于 2012-09-07 20:55:13
通常,计算出的列被视为非规范化的.
在这里,可以很容易地将规则作为附加数据输入到另一个表中,例如:
maintenance_limits
-------------------
type
min_count
max_count
result_value然后填上你的信息:
DATABASE, 30, 100, 10等。
然后,只需编写一个简单的联接查询,即可获得“计算”结果。
发布于 2012-09-07 21:16:12
不要储存可以计算出来的东西。只需使用将为您执行此操作的查询:
SELECT Environment, Servers, Databases,
CASE
WHEN Servers BETWEEN 1 AND 30 THEN 1
WHEN Servers BETWEEN 31 AND 100 THEN 5
ELSE 0
END AS 'Server Maintenance',
CASE
WHEN Databases BETWEEN 1 AND 10 THEN 1
WHEN Databases BETWEEN 30 AND 100 THEN 10
ELSE 0
END AS 'Server Maintenance',
FROM XYZ您可能希望将ELSE更改为NULL,这取决于您要对数据做什么。
https://stackoverflow.com/questions/12325160
复制相似问题