如何在 Col3 中显示值,其中 Col1 值为真,对于 Col1 中的假值,仅在 Col3 中显示 NULL

How to show values in Col3 where Col1 values are true and for false values in Col1 show NULL in Col3 only

SELECT Col1, Col2, Col3
FROM Table 

结果集:(样本 table)

 Col1        Col2        col3
----------- ---------- -----------
Value       Value      Value
Value       Value      Value         
Value       Value      Value         
Value       Value      Value         
Value       Value      Value 

显示具有 NULL/empty 值的 Col3(假设 Col3 在需要时支持 NULL)除了 col1 条件为的行(=值) true 保留所有行的 Col2 上的值。

条件如( WHERE Col > 2| WHERE chareindex( 'x' , Col1 )等)

Table 最终结果:(此处的条件对第 2 行和第 5 行成立)

  Col1        Col2        col3
----------- ---------- -----------
1 Value       Value      NULL
2 Value       Value      Value         
3 Value       Value      NULL         
4 Value       Value      NULL         
5 Value       Value      Value 

问题的更多表达方式:

SELECT EmployeeID, Firstname, Lastname,
From Employees 

结果集:

EmployeeID  FirstName  LastName
----------- ---------- --------------------
1           Nancy      Davolio
2           Andrew     Fuller
3           Janet      Leverling
4           Margaret   Peacock
5           Steven     Buchanan
6           Michael    Suyama
7           Robert     King

假设在上面的代码中有一个 employeeID 条件,并且 employeeID 3 和 6 符合该条件

我希望达到:

EmployeeID  FirstName  LastName
----------- ---------- --------------------
1           Nancy      NULL
2           Andrew     NULL
3           Janet      Leverling
4           Margaret   NULL
5           Steven     NULL
6           Michael    Suyama
7           Robert     NULL

什么 condition/s 以及应该如何放置才能达到这个结果集

另一种出题方式:(基于问题第一段)

对于 col1 中的值与 condition/s 相同的行,显示 Col3 中的值,如果不显示 NULL/empty 并保留所有行的 col2 值。

我不确定是否完全理解您想要做什么,但是 SELECT CASE WHEN 可以解决您的问题吗?

这是一个例子:

SELECT
    Col1, 
    Col2,
    CASE WHEN (Condition) THEN NULL ELSE Col3 END AS Col3
FROM Table 

它会return这个输出:

 Col1        Col2        col3
----------- ---------- -----------
5           Value      Value
21          Value      NULL         
7           Value      Value         
8           Value      Value         
40          Value      NULL 

使用这种方式,您有条件地 select 来自列的数据或 NULL

EDIT :关于 case...when 的解释,你可以在这里找到解释和例子: https://www.w3schools.com/sql/sql_case.asp

试试这个:

Select col1, col2, 
Case When col1 (condition) Then col3 Else null End As col3 
From Table