1

SQL Server で次の 2 つの出力を生成するビューがいくつかあります。最初のもの (Flats 出力) は、タイルルーフとブリックウォールのある特定の町のフラットの数を示しています。2 つ目は同じことを示していますが、住宅用です。

私がやろうとしているのは、フラットと戸数が対応するタイルルーフとブリックウォールの組み合わせと組み合わされた 3 番目の例のようなファイナル テーブルを作成することです。

ユニオンしてからグループ化を試みましたが、フラットとハウスのカウント列を並べて表示するのに本当に苦労しています。誰か助けてください。

ありがとう

--View one
| Town | Flats | TileRoofs | Brick Wall |
-----------------------------------------
| A    | 3     | Y         | N          |
| A    | 4     | N         | Y          |
| A    | 8     | N         | N          |


--View two
| Town | Houses | TileRoofs | Brick Wall |
------------------------------------------
| A    | 1      | Y         | Y          |
| A    | 2      | Y         | N          |
| A    | 5      | N         | Y          |
| A    | 2      | N         | N          |


--Prefered output, by combining the two--

| Town | Flats | Houses | TileRoofs | Brick Wall |
--------------------------------------------------
| A    | 0     |  1     | Y         | Y          |
| A    | 3     |  2     | Y         | N          |
| A    | 4     |  5     | N         | Y          |
| A    | 8     |  2     | N         | N          |
4

3 に答える 3

3

ここでは完全外部結合が役立つかもしれません

select isnull(a.Town, b.Town) Town,
       isnull(a.TileRoofs, b.TileRoofs) TileRoofs,
       isnull(a.[Brick wall], b.[Brick wall]) [Brick wall],
       isnull(a.Flats, 0) Flats,
       isnull(b.Houses, 0) Houses
  from ViewOne a
  full outer join ViewTwo b
    on a.Town = b.Town
   and a.TileRoofs = b.TileRoofs
   and a.[Brick wall] = b.[Brick wall]
于 2012-08-21T09:51:46.000 に答える
0

You may be after a full outer join

select 
    houses.town,
    flats.flats, 
    houses.houses,
    houses.BrickWall,
    houses.TileRoofs
from flats
full outer join houses
    on houses.town=flats.town
    and houses.TileRoofs = flats.TileRoofs
    and houses.BrickWall = flats.BrickWall
于 2012-08-21T09:55:54.200 に答える
0
select
    v2.Town ,coalesce(v1.flat,0) as flat,v2.houses,v2.TileRoofs, v2.Brick, v2.Wall 
from
    view2 as v2 left join view1 as v1
on v1.town=v2.town
于 2012-08-21T09:52:33.593 に答える