SELECT TOP 10
VendorId,
CASE WHEN VendorNumber IS NULL THEN VendorId
END AS 'VendorNumber'
FROM Table
以上不起作用。
基本上我想这样做:
我想选择2列:VendorId和VendorNumber。
如果VendorNumber为NULL,我想显示VendorId。
如何通过上述查询完成此操作?该查询基本上显示NULL而不是VendorID。
答案 0 :(得分:5)
您必须指定ELSE
,否则当VendorNumber
不时,您将获得null:
SELECT TOP 10
VendorId,
CASE WHEN VendorNumber IS NULL THEN VendorId ELSE VendorNumber
END AS 'VendorNumber'
FROM Table
进行简化
select top 10 VendorId, isnull(VendorNumber, VendorId) as VendorNumber
from Table
答案 1 :(得分:2)
您错过了ELSE
,因此它会在null
不为空的所有行中放置VendorNumber
:
SELECT TOP 10 VendorId,
CASE
WHEN VendorNumber IS NULL
THEN VendorId
ELSE VendorNumber
END AS 'VendorNumber'
FROM Table
这也可以写成:
SELECT TOP 10 VendorId,
Coalesce(VendorNumber, VendorId) AS 'VendorNumber'
FROM Table
答案 2 :(得分:0)
尝试 选择前10名 厂商ID, COALESCE(VendorNumber,VendorId)作为vendornumber 从表
答案 3 :(得分:0)
试试这个
select top 10, vendorid, coalesce(VendorNumber,VendorID) VendorNumber
from yourtable
答案 4 :(得分:0)
执行此操作的SQL函数是coalesce()
:
SELECT TOP 10 VendorId, coalesce(VendorNumber, VendorId) as VendorNumber
FROM Table
这假设VendorId和VendorNumber是相同的类型。否则,您可能需要添加一些转换。例如,如果VendorId是字符串而VendorNumber是一个数字:
select top 10, VendorId, coalesce(cast(VendorNumber as varchar(255)), VendorId)
from Table
答案 5 :(得分:0)
“Else”缺失。
SELECT TOP 10 VendorId,
CASE
WHEN VendorNumber IS NULL
THEN VendorId
ELSE VendorNumber
END AS 'VendorNumber'
FROM Table