1

私が必要としているものをタイトルに凝縮するのは困難でした...ここに行きます。これはSQLServer2008用です。

ここで説明するには長すぎるため、4つの列の値がnullの場合、他の列の中でも特に1の値を表示するSELECTステートメントが必要です。このようなもの。

SELECT name, lastname, p1, p2, p3, p4, "1 if p1,p2,p3 and p4 are all NULL, 0 otherwise" city, st, zip
FROM mytable

問題は、これをコード化するためにどのように変換するかです。「p1、p2、p3、およびp4がすべてNULLの場合は1、それ以外の場合は0」

私は試した

CASE len(p1+p2+p3+p4) WHEN NULL 1 ELSE 0 END

しかし、それはうまくいきませんでした。私がするときでも

SELECT len(p1+p2+p3+p4) FROM mytable

結果はNULLです。

IF ELSEを試しましたが、SELECTステートメントでは歓迎されないようです。

アイデア?

ありがとう。


みんなありがとう。COALESCEを使わない答えを選んだのは、それが私が理解したものだからです。ここでMSの説明を読んでみました:http://msdn.microsoft.com/en-us/library/ms190349.aspxまだ完全には理解していませんでした。さらに、「null値の少なくとも1つはタイプされたNULL」は私を少し怖がらせた。ありがとうございます。


4

3 に答える 3

3
SELECT name, lastname, p1, p2, p3, p4, CASE WHEN COALESCE(p1, p2, p3, p4) IS NULL THEN 1 ELSE 0 END AS nulltest, city, state, zip
FROM mytable
于 2012-07-09T17:49:49.943 に答える
1

試す

select case
   coalesce(null,null,null,null,'X') 
   when 'X' then 1
   else 0
   end 
于 2012-07-09T17:48:45.780 に答える
1

これを試して:

    SELECT name, lastname, 
CASE WHEN  (p1 is null and p2 is null and p3 is null and p4 is null) then 1 
else 0 end , city, st, zip
    FROM mytable
于 2012-07-09T17:49:24.993 に答える