Sütun satırlara dönüştürülmesi, UNPIVOT
olarak adlandırılır. Kullandığınız SQL Server sürümünü belirtmediniz, ancak sonuca ulaşmak için birkaç farklı yol var.
Sen UNION ALL
ile SELECT
kullanabilirsiniz:
SELECT name, 'age' as column, cast(age as varchar(10)) as value
FROM yourtable
UNION ALL
SELECT name, 'gender' as column, gender as value
FROM yourtable;
SQL Server 2005+ kullanıyorsanız, o zaman UNPIVOT işlevini kullanabilirsiniz: yerine UNPIVOT fonksiyonunun, Nihayet
SELECT name, column, age
FROM
(
SELECT
name,
age = cast(age as varchar(10)),
gender
FROM yourtable
) d
UNPIVOT
(
value
for column in (age, gender)
) unpiv;
sen Ayrıca VALUES
(2008+) veya UNION ALL
:
SELECT name, column, age
FROM yourtable
CROSS APPLY
(
VALUES
('age', cast(age as varchar(10)),
('gender', gender)
) c (column, value);
ile
CROSS APPLY
'u da kullanabilir
Bu sürümlerden herhangi biri, istediğiniz sonucu verecektir. age
sütununu varchar
'a dökmem gerektiğine dikkat edersiniz. Bunun nedeni, sütunların datatipi/uzunluğunun (unpivot olarak) aynı olması gerektiğinden, son sonuçta bunları tek bir sütuna dönüştüreceksiniz.
Bir SQL 2008 sunucusunda yaptığım testlerde, max_length öğesinin eşleşmesi gerektiğini de belirtmek ister, bu nedenle Cinsiyet char (1) ise, aynı zamanda unpivotun gerçekleşmesi için yayınlanması gerekir. Yine de dış başvurusu denemedim. –
Yani demek istediğim, pivotun nasıl kullanılacağıyla ilgili olarak, sadece zıt uygulamaları bulduktan sonra, UNpivot'a bakmalıydım ... parlak! :) Teşekkürler! – mathematician
@JaazCole Yalnızca veri türünün aynı uzunlukta olmasını gerektiren UNPIVOT'tur - bunu bkz. [DBA.SE] (http://dba.stackexchange.com/questions/54353/why-does-sql-server-require- -veri türü-uzunluk-be--aynı zaman kullanan-unpivo) – Taryn