从其他表插入表格列时,如何根据另一列获取一列?

时间:2017-08-16 05:13:09

标签: sql

我知道理解我所说的可能有点困难。 你很快就会得到它: CREATE TABLE user_used_total ( user varchar(10), used int, total int );

INSERT INTO user_used_total 
VALUES ('A', 30, 100);

CREATE TABLE user_used_total_free_thenWhat 
(
    user varchar(10),
    used int,
    total int,
    free int,
    thenWhat varchar(10)
);

INSERT INTO user_used_total VALUES ('A', 30, 100); CREATE TABLE user_used_total_free_thenWhat ( user varchar(10), used int, total int, free int, thenWhat varchar(10) ); 我想这样做:

INSERT INTO user_used_total_free_thenWhat SELECT u.user, u.used, u.total, u.total - u.used, CASE WHEN u.total - u.used > 50 THEN 'higher than 50' ELSE 'lower than 50' END FROM user_used_total AS u;

我真的需要你的帮助。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你就会问如何只写一次u.total - u.used 如果是这种情况那么坏消息是你不能在同一个选择列表中使用选择列表中的计算值,但好消息是,如果你的数据库支持公共表表达式,你可以使用这样的cte(这是t-sql语法,不确定其他数据库 - 您可能需要稍微更改一下:

;with cte as
(
    SELECT u.user, 
           u.used, 
           u.total, 
           u.total - u.used As free 
    FROM user_used_total
)

INSERT INTO user_used_total_free_thenWhat 
(
    user,
    used,
    total,
    free,
    thenWhat
)

SELECT user,
       used,
       total,
       free,
       CASE WHEN free > 50 THEN 
           'higher than 50' 
       ELSE 
           'lower than 50' 
       END 
FROM cte;