Sql 计算列-需要帮助编写语句

Sql 计算列-需要帮助编写语句,sql,sql-server,database,calculated-columns,Sql,Sql Server,Database,Calculated Columns,直到今天我需要设置一个计算柱,我才听说过计算柱,所以请原谅我的愚蠢。这是我的CREATETABLE语句 CREATE TABLE [Match]( [Match Org] [nvarchar](10) NULL, [Bypass] [nvarchar](10) NULL, [win] as case when [Match Org] == 'yes' or [Bypass] == 'yes' then 'yes' else 'no' ) ON [PRIMARY] G

直到今天我需要设置一个计算柱,我才听说过计算柱,所以请原谅我的愚蠢。这是我的CREATETABLE语句

CREATE TABLE [Match](

    [Match Org] [nvarchar](10) NULL,
    [Bypass] [nvarchar](10) NULL,
    [win] as case when [Match Org] == 'yes' or [Bypass] == 'yes' then 'yes' else 'no'

) ON [PRIMARY]

GO
如果match org或bypass中有yes,我希望win列自动计算为yes。。。谢谢

你能做的就是

CREATE TABLE [Match](

    [Match Org] [nvarchar](10) NULL,
    [Bypass] [nvarchar](10) NULL,
    [win] AS CASE WHEN  ( [Match Org] = 'yes'    --- equality check is:  =
                       OR [Bypass] = 'yes' )     --- not:  ==
                  THEN 'yes' 
                  ELSE 'no'
             END                                 --- END was missing
        PERSISTED             --- you may also want to make
                              --- the column PERSISTED 
) ON [PRIMARY]
在表中创建列

[win]  AS ([dbo].[GetColValue]([Match Org],[Bypass ]))
可以创建的函数

ALTER FUNCTION [dbo].[GetColValue](@MatchOrg nvarchar(10),@Bypass nvarchar(10))
RETURNS varchar(10)
AS
    BEGIN
        DECLARE @Result varchar(10)
        SET @Result = case 
                  when ([Match Org] = 'yes' or [Bypass] = 'yes' )
                  then 'yes' else 'no' 
                  end        
         RETURN 
        (
            @Result
        )
    END
你能做的就是

在表中创建列

[win]  AS ([dbo].[GetColValue]([Match Org],[Bypass ]))
可以创建的函数

ALTER FUNCTION [dbo].[GetColValue](@MatchOrg nvarchar(10),@Bypass nvarchar(10))
RETURNS varchar(10)
AS
    BEGIN
        DECLARE @Result varchar(10)
        SET @Result = case 
                  when ([Match Org] = 'yes' or [Bypass] = 'yes' )
                  then 'yes' else 'no' 
                  end        
         RETURN 
        (
            @Result
        )
    END