0

多くの列を持つ SQL ビューがあります。ID (土地区画 ID) ex : 7465-85-7468 Building (必要に応じて特定の建物の ID) ex : 102 Room (必要に応じて特定の部屋の ID) ex : 0023

各行に ID がありますが、ほとんどの行には建物 ID や部屋 ID がありません

建物は「000」、部屋は「0000」で空白行を埋めたいと思います。

これらのフィールドを 4 番目のフィールド (完全な ID) に連結できます

「ISNULL」でデフォルト値を取得しようとしましたが、うまくいきませんでした。

今のところ、私はこのようなものを持っています

ID/建物/部屋/フルID

7848-05-6956 / / / 7848-05-6956--

6985-26-7485 / 102 / 0000 / 6985-26-7485-102-0000

7236-12-0145 / / 0223 / 7236-12-0145--0223

これが必要だ

ID/建物/部屋/フルID

7848-05-6956 / 000 / 0000 / 7848-05-6956-000-0000

6985-26-7485 / 102 / 0000 / 6985-26-7485-102-0000

7236-12-0145 / 000 / 0223 / 7236-12-0145-000-0223

4

1 に答える 1

5

フィールドがNULL可能でない場合、データはNULLではなく空の文字列として格納される場合があります。

次のようなことを試してください。

SELECT x.ID, x.Building, x.Room, ID + '-' + Building + '-' + Room AS [Full ID]
FROM (
  SELECT
    ID
  , CASE WHEN ISNULL(Building, '') = '' THEN '000' ELSE Building END AS Building
  , CASE WHEN ISNULL(Room, '') = '' THEN '0000' ELSE Room END AS Room
  FROM MyTable ) x

これにより、NULLと空の文字列の両方が処理され、CASEステートメントを2回実行せずに完全なIDを作成できます。

于 2012-10-16T15:58:21.853 に答える