0

我有一个XYZ包含 3 列的表:

Environment Servers Databases
Dev         5        10
PROD        25       100
Test        9        10
TOTAL       39       120

我想根据 and 的值向名为 and 的表中添加另外两列(可能SERVER MAINTENANCE是表中的计算列,以便每当将数据添加到表中时,该列都应该具有自动计算的值)就像,DATABASE MAINTENANCETOTAL SERVERSTOTAL DATABASES

    • 如果总 SERVERS 为 [1 到 30],则 SERVER MAINTENANCE 列的值应为 1
    • 如果总 SERVERS 为 [30 到 100],则 SERVER MAINTENANCE 列的值应为 5
    • 如果总 DATABASES 为 [1 到 10],则 DATABASE MAINTENANCE 列的值应为 1
    • 如果总 DATABASES 为 [30 到 100],则 DATABASE MAINTENANCE 列的值应为 10
4

2 回答 2

1

通常,计算的列被认为是非标准化的。

在这里,您正在阐明可以作为附加数据轻松输入到另一个表中的规则,例如:

maintenance_limits
-------------------
type
min_count
max_count
result_value

然后填写您的信息:

DATABASE, 30, 100, 10

等等

那么您只需要编写一个简单的 JOIN 查询即可获得“计算”结果

于 2012-09-07T20:55:13.213 回答
0

不要存储可以计算的内容。只需使用将为您执行此操作的查询:

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具体取决于您要对数据执行的操作。

于 2012-09-07T21:16:12.393 回答