0

関係のない単一のテーブルがあります。フィールドcountyNameが長さゼロの文字列の場合Statewide、結果セットに含める必要があります。それ以外の場合は、フィールドの値をそのままにしておく必要があります。たとえばここに画像の説明を入力してください、2番目の列に「Statewide」と「countyName」があることに注意してください。countyNameは、データベースに実際に格納されている元の値である必要があります。

`countyName`  `address`
               blah blah
Jackson        blah blah

する必要があります(両方の例の最初の行は列名です)

countyName     address
Statewide      blah blah
Jackson        blah blah

これが私が試したことです。この例の残りのフィールドは無視してかまいません。

select case servicetype
       when 'cr' then 'Community Resource'
       when 'ed' then 'Education'
       when 'fb' then 'Faith-based'
       when 'me' then 'Medical Equipment'
       when 'hc' then 'Health Care'
       else 'Other' 
       end as serviceType

       ,case countyName
       when '' then 'Statewide'
       else 'countyname' end

       ,name
       ,physicaladdress
       ,city
       ,statelocation
       ,zip
       ,phone
       ,website
       from main

      order by countyName, servicetype, name
4

5 に答える 5

5

期待される結果を正確に述べていませんが、「countyname」のリテラルを返したくないというのが私の推測です。必要なのは、列の値です。

したがって、現在の case ステートメントを次のように置き換えてみてください...

,case countyName
when '' then 'Statewide'
else countyName end

追加のセーフティ ネットとして、...NULLを使用して値を確認することもできます。ISNULL

,case ISNULL(countyName,'')
when '' then 'Statewide'
else countyName end
于 2012-10-08T12:45:34.297 に答える
1

これを試して:

case when isnull(countyName,'') = '' then 'Statewide' else countyname end
于 2012-10-08T12:46:29.937 に答える
0

これを試してください... IsNULL をチェックする必要があります。

case ISNULL(countyName,'') when '' then 'Statewide' else 'countyname' end

于 2012-10-08T12:53:06.327 に答える
0
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;

行く

于 2013-05-16T05:40:07.957 に答える
0

「IFNULL」関数を探していると思います。

このように使用するだけです:SELECT ...,ISNULL( column, "fallback value" ),...あなたの場合

于 2012-10-08T12:45:02.510 に答える