-1

以下に示すテーブルの場合

Animal        LiveIn
------        ------

Cat           land
fish          water
frog          land
frog          water
salamander    land
salamander    water

以下のような結果が必要です

Animal        Column1    Column2
------        -------    -------
cat           land       *null*
fish          water      *null*
frog          land       water
salamander    land       water
4

3 に答える 3

1

これはまさにあなたが求めたものではありませんが、それを解決する別の方法です:

declare @t table(Animal varchar(10), LiveIn varchar(7))
insert @t values
('Cat','land'),('fish','water'),('frog','land'),
('frog','water'),('salamander','land'),('salamander','water')

select * from @t
PIVOT
(min([LiveIn])  
FOR Livein
in([land],[water])  
)AS p ORDER BY 1

結果:

Animal     land  Water
______________________
Cat        land  NULL
fish       NULL  water
frog       land  water
salamander land  water
于 2013-07-20T16:18:30.430 に答える
1

あなたのコードは紛らわしいです。「-----」は何を示しているのでしょうか?

繰り返し値があり、それらを「グループ化」する権利があります。データベースのスキーマレベルに関与し、 DDL コードを要求しているように見えるので、正規化を見てください。 https://en.wikipedia.org/wiki/Database_normalization

最初の 2 つの「------」が実際には 2 つのテーブルである場合、そのスキーマを次のように作り直すことをお勧めします。

Animal    Environment    Animal_Environment
------    ------         ------
id        id             animal_id
name      name           environment_id

これにより、データベース内でのコンテンツの繰り返しを回避できます。また、そのコンテンツに対するより単純なDML クエリにもつながります。

于 2013-07-20T10:48:23.780 に答える