سؤال

طاولتي لديه الأعمدة التالية:

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.

آمل أن يساعد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top