0
SELECT TOP 10
        VendorId,
        CASE WHEN VendorNumber IS NULL THEN VendorId
        END AS 'VendorNumber'
FROM    Table

以上不起作用。

基本上我想这样做:

我想选择 2 列:VendorId 和 VendorNumber。

如果 VendorNumber 为 NULL,我想显示 VendorId。

我怎样才能用上面的查询来完成这个?该查询基本上显示 NULL 而不是 VendorID。

4

6 回答 6

5

您必须指定一个,否则当ELSE空时您将获得空:VendorNumber

SELECT TOP 10
        VendorId,
        CASE WHEN VendorNumber IS NULL THEN VendorId ELSE VendorNumber
        END AS 'VendorNumber'
FROM    Table

您可以使用isnull或简化coalesce

select top 10 VendorId, isnull(VendorNumber, VendorId) as VendorNumber
from Table
于 2013-02-25T20:14:16.327 回答
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
于 2013-02-25T20:14:44.230 回答
0

尝试 Select top 10 VendorId, COALESCE(VendorNumber, VendorId) as vendornumber From table

于 2013-02-25T20:15:23.140 回答
0

试试这个

select top 10, vendorid, coalesce(VendorNumber,VendorID) VendorNumber
from yourtable
于 2013-02-25T20:15:23.483 回答
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
于 2013-02-25T20:15:54.717 回答
0

“其他”不见了。

 SELECT TOP 10 VendorId,
        CASE 
            WHEN VendorNumber IS NULL 
            THEN VendorId
            ELSE VendorNumber
        END AS 'VendorNumber'
    FROM    Table
于 2013-02-25T20:17:11.813 回答