T-SQL基于条件强制为null值

Lor*_*ion 1 sql t-sql 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.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
Run Code Online (Sandbox Code Playgroud)

我想要做的是:当a.Status(int)是2或3时,我想强制a.Username显示为NULL.我该怎么办呢?

Gun*_*eli 5

试试这个:

 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
Run Code Online (Sandbox Code Playgroud)