基于条件的T-SQL强制空值

基于条件的T-SQL强制空值,sql,tsql,sql-view,Sql,Tsql,Sql View,这是我的看法 SELECT e.Text AS StatusText, a.Created AS [DATE], a.Username, b.Name AS CustomerName, c.Name AS ServiceName, d.Message AS DeviationMessage FROM dbo.StatusUpdate AS a LEFT OUTER JOIN dbo.Custo

这是我的看法

 SELECT e.Text AS StatusText,
        a.Created AS [DATE],
        a.Username,
        b.Name AS CustomerName,
        c.Name AS ServiceName,
        d.Message AS DeviationMessage
   FROM dbo.StatusUpdate AS a
        LEFT OUTER JOIN dbo.Customer AS b ON a.CustomerId = b.CustomerID
        LEFT OUTER JOIN dbo.Service AS c ON a.ServiceId = c.ServiceID
        LEFT OUTER JOIN dbo.Deviation AS d ON a.DeviationId = d.DeviationID
        LEFT OUTER JOIN dbo.StatusText AS e ON a.Status = e.ID
我想做的是:当a.Status(int)为2或3时,我想强制a.Username显示为NULL。我应该如何处理这个问题?

试试这个:

 SELECT e.Text AS StatusText,
        a.Created AS [DATE],
        CASE a.status
            WHEN 2 THEN NULL
            WHEN 3 THEN NULL
            ELSE a.Username
        END,  
        b.Name  AS CustomerName,
        c.Name  AS ServiceName,
        d.Message AS DeviationMessage
   FROM dbo.StatusUpdate AS a
        LEFT OUTER JOIN dbo.Customer AS b ON a.CustomerId = b.CustomerID
        LEFT OUTER JOIN dbo.Service AS c ON a.ServiceId = c.ServiceID
        LEFT OUTER JOIN dbo.Deviation AS d ON a.DeviationId = d.DeviationID
        LEFT OUTER JOIN dbo.StatusText AS e ON a.Status = e.ID
试试这个:

 SELECT e.Text AS StatusText,
        a.Created AS [DATE],
        CASE a.status
            WHEN 2 THEN NULL
            WHEN 3 THEN NULL
            ELSE a.Username
        END,  
        b.Name  AS CustomerName,
        c.Name  AS ServiceName,
        d.Message AS DeviationMessage
   FROM dbo.StatusUpdate AS a
        LEFT OUTER JOIN dbo.Customer AS b ON a.CustomerId = b.CustomerID
        LEFT OUTER JOIN dbo.Service AS c ON a.ServiceId = c.ServiceID
        LEFT OUTER JOIN dbo.Deviation AS d ON a.DeviationId = d.DeviationID
        LEFT OUTER JOIN dbo.StatusText AS e ON a.Status = e.ID

通过案例陈述,你可以很容易地做到这一点

大概是

CASE WHEN Status = 3 THEN USERNAME IS NULL

这是未经测试的,但想法是存在的。

您可以通过案例陈述轻松实现这一点

大概是

CASE WHEN Status = 3 THEN USERNAME IS NULL
这是未经测试,但想法是存在的