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

上記は機能しません。

基本的に私はこれをしたい:

VendorId と VendorNumber の 2 つの列を選択します。

VendorNumber が NULL の場合、VendorId を表示したいと考えています。

上記のクエリでこれを達成するにはどうすればよいですか? クエリは基本的に、VendorID ではなく NULL を表示しています。

4

6 に答える 6

5

を指定する必要があります。そうしないと、が nullでないELSE場合に null が返されます。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

が欠落しているため、 nullではないすべての行にELSEa を配置しています。nullVendorNumber

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,
        CASE 
            WHEN VendorNumber IS NULL 
            THEN VendorId
            ELSE VendorNumber
        END AS 'VendorNumber'
    FROM    Table
于 2013-02-25T20:17:11.813 に答える
0

テーブルからvendornumberとして上位10のVendorId、COALESCE(VendorNumber、VendorId)を選択してみてください

于 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 に答える