在SQL中创建计算列

时间:2012-09-07 20:47:08

标签: sql

我有一个包含3列的表XYZ

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

我想根据SERVER MAINTENANCEDATABASE MAINTENANCE的值(可能是表格的计算列,)向名为TOTAL 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

2 个答案:

答案 0 :(得分:1)

通常情况下,计算的列被视为非标准化。

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

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

然后填写您的信息:

DATABASE, 30, 100, 10

然后你只需编写一个简单的JOIN查询来获得'计算'结果

答案 1 :(得分: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,具体取决于您要对数据执行的操作。