首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中创建计算列

在SQL中创建计算列
EN

Stack Overflow用户
提问于 2012-09-07 20:47:08
回答 2查看 391关注 0票数 0

我有一个包含3列的表XYZ

代码语言:javascript
复制
Environment Servers Databases
Dev         5        10
PROD        25       100
Test        9        10
TOTAL       39       120

我想根据SERVER MAINTENANCETOTAL DATABASES的值向表中添加另外两列,称为TOTAL SERVERSTOTAL DATABASES(可能是表中的计算列,这样,每当数据被添加到表中时,该列应该具有自动计算的值)。

    • 如果服务器总数为1到30,则服务器维护列的值应为1。
    • 如果服务器总数为30到100,则服务器维护列的值应为5。

    • 如果数据库总数为1到10,则数据库维护列的值应为1。
    • 如果数据库总数为30至100,则数据库维护列的值应为10。

EN

回答 2

Stack Overflow用户

发布于 2012-09-07 20:55:13

通常,计算出的列被视为非规范化的.

在这里,可以很容易地将规则作为附加数据输入到另一个表中,例如:

代码语言:javascript
复制
maintenance_limits
-------------------
type
min_count
max_count
result_value

然后填上你的信息:

代码语言:javascript
复制
DATABASE, 30, 100, 10

等。

然后,只需编写一个简单的联接查询,即可获得“计算”结果。

票数 1
EN

Stack Overflow用户

发布于 2012-09-07 21:16:12

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

代码语言:javascript
复制
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,这取决于您要对数据做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12325160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档