基于条件的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
这是未经测试,但想法是存在的