سؤال
طاولتي لديه الأعمدة التالية:
A | B | C | D | E | F
أريد أن أعرض هذا على النحو التالي:
MyColumn | MyColumn2
A | B
C | D
E | F
كما ترون أرغب في عرض الأعمدة كأزواج باستخدام اسم عمود مخصص. الأزواج هي عمود A و B، العمود C و D والعمود C و D.
المحلول
select A as [Col 1], B as [Col 2] from table
union all
select C,D from table
union all
select E,F from table
نصائح أخرى
إذا كنت أفهمك بشكل صحيح، يمكنك القيام بذلك مع اتحاد:
SELECT A as MyColumn, B as MyColumn2
UNION
SELECT C as MyColumn, D as MyColumn2
UNION
SELECT E as MyColumn, F as MyColumn2
إذا لم تكن أنواع البيانات الخاصة بك هي نفسها بالنسبة للأعمدة المطابقة، فستحتاج إلى تحويل نوع البيانات أولا، لذلك مثل شيء مثل:
SELECT CONVERT(VARCHAR(10), A) as MyColumn, CONVERT(VARCHAR(10), B) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), C) as MyColumn, CONVERT(VARCHAR(10), D) as MyColumn2
UNION
SELECT CONVERT(VARCHAR(10), E) as MyColumn, CONVERT(VARCHAR(10), F) as MyColumn2
هذا لن مقياس إلى مليار أعمدة ولكن ...
Select A as MyColumn, B as MyColumn2 from Table
UNION
Select C as MyColumn, D as MyColumn2 from Table
UNION
Select E as MyColumn, F as MyColumn2 from Table
هذا الاستعلام سوف يزيل التكرارات على الرغم من. لذلك قل هناك سجل واحد في الطاولة
مرحبا | العالم | مرحبا | العالم | مرحبا | عالم
بلدي المحدد سوف يعود فقط
مرحبا | عالم
سيل سيلبو العودة الثلاثة ...
في SQL Server 2005 Unpivot المشغل يمكن حل مشكلتك.Unpivot يحول الأعمدة إلى الصفوف في SQL Server 2005.
آمل أن يساعد
لا تنتمي إلى StackOverflow