如何根据前两列的值计算第三列中的表达式?

问题描述 投票:0回答:1

在专栏中我有一个表达式 我想评估这个表达式 示例 - 我有一个包含列 COLA、COLB、COLC 的表 现在假设我有一行,COLA = 5,COLB = 10,COLC = 'COLA + 2*COLB' 我应该能够编写一个视图来计算 COLC 的值 在本例中它将是 25,但如果我更改 COLA 和 COLB 的值,派生列的值必须在视图中相应更改

这是 CHATGPT 的建议,但我认为那是不对的。请帮忙

CREATE TABLE YourTable (
    COLA INT,
    COLB INT,
    COLC_EXPRESSION NVARCHAR(MAX)
);

INSERT INTO YourTable (COLA, COLB, COLC_EXPRESSION)
VALUES (5, 10, 'COLA + 2*COLB');

-- 使用动态 SQL 创建视图来计算表达式

CREATE VIEW ComputedValues AS
SELECT 
    COLA,
    COLB,
    COLC_EXPRESSION AS Expression,
    CASE 
        WHEN COLC_EXPRESSION IS NOT NULL THEN 
            CAST(
                (
                    SELECT COLA + 2 * COLB -- Replace with your actual expression evaluation logic
                    FROM YourTable 
                    WHERE t.COLA = YourTable.COLA AND t.COLB = YourTable.COLB
                ) AS NVARCHAR(MAX)
            )
        ELSE 
            NULL 
    END AS COLC
FROM YourTable t;
sql expression
1个回答
0
投票

在这种情况下你可以添加虚拟列-

ALTER TABLE tb1
    ADD (COLC INT GENERATED ALWAYS AS (COLA + 2*COLB) VIRTUAL);
© www.soinside.com 2019 - 2024. All rights reserved.