-3

1 つのフィールドから 3 列のデータを取得しようとしています。基本的に、引数用のフィールドがあり、次のデータを含むテーブルがあります。

  • 色、
  • モデル、
  • 車の年。

ID4色、ID5型式、年式で項目分けされていID6ます。フィルターを使用して問題なく 1 つのデータ セットをプルできます。フィルター = 4、5、または 6。ただし、ヘッダーを取得するだけでデータをまったく取得しないため、倍数をプルすることはできません。

4

1 に答える 1

0

SQL Server 2005 以降を使用していて、実際に「テーブル内の 1 つの列を同じテーブル内の別のフィールドに基づいて複数の名前付き列に分割する方法」という質問があると仮定すると、質問に基づいてパターン化された簡単な例を次に示します。

このデータセットを与えます:

declare @tbl table (id int, tag char(3), data varchar(255))

insert into @tbl values
(1, 'ID4', 'Red'), (1, 'ID5', 'Toyota'), (1, 'ID6', '1999'),
(2, 'ID4', 'Blue'), (2, 'ID5', 'Honda'), (2, 'ID6', '2000'),
(3, 'ID4', 'Green'), (3, 'ID5', 'Nissan'), (3, 'ID6', '2004'),
(4, 'ID4', 'Red'), (4, 'ID5', 'Nissan'), (4, 'ID6', '1990'),
(5, 'ID4', 'Black'), (5, 'ID5', 'Toyota'), (5, 'ID6', '2002')

簡単なselectステートメントで次のデータが返されます。

select * from @tbl

id  tag  data
1   ID4  Red
1   ID5  Toyota
1   ID6  1999
2   ID4  Blue
2   ID5  Honda
2   ID6  2000
3   ID4  Green
3   ID5  Nissan
3   ID6  2004
4   ID4  Red
4   ID5  Nissan
4   ID6  1990
5   ID4  Black
5   ID5  Toyota
5   ID6  2002

このpivotクエリは、データ (車ごとに 1 行) を返し、Color、Model、Year をそれぞれの列として返します。

select id, [ID4] as 'Color', [ID5] as 'Model', [ID6] as 'Year'
from (select id, tag, data from @tbl) as p
pivot (max(data) for tag in ([ID4], [ID5], [ID6])) as pvt
order by pvt.id

出力は次のようになります。

id  Color  Model   Year
1   Red    Toyota  1999
2   Blue   Honda   2000
3   Green  Nissan  2004
4   Red    Nissan  1990
5   Black  Toyota  2002
于 2012-09-18T00:53:57.007 に答える