PDA

View Full Version : تبدیل چند سطر به یک سطر



micro_bhk
یک شنبه 17 آذر 1392, 09:32 صبح
با عرض سلام و خسته نباشید
میخواستم از دوستانی که میتونن راهنمایی کنن خواهش کنم که نظرشون رو بگن

من دوتا جدول دارم به صورت زیر:
http://upcity.ir/images2/53947982308486555499.gif

میخواستم که اطلاعات این دوتا جدول بعد از Join شدن تو یک سطر نمایش پیدا کنه، به صورت زیر:

http://upcity.ir/images2/39131942032021267025.gif

که اطلاعات به صورت زیر نمایش داده بشه:


MonthlyElementId1 / ElementId 1 / Title 1 / Value 1 / MonthlyElementId2 / ElementId 2 / Title 2 / Value 2 / ... / n

سرچ کردم؛ ولی مشابه این چیزی نتونستم پیدا کنم.
البته تو یک ستون رو چند نمونه دیدم که انجام شده ولی میخواستم که هر ستون مستقل باشه

با تشکر

hamid_hr
یک شنبه 17 آذر 1392, 12:33 عصر
يه چيزي شبيه به اين بايد بنويسي
select name + '/' from dbo.Personal for xml path('')

micro_bhk
یک شنبه 17 آذر 1392, 12:44 عصر
يه چيزي شبيه به اين بايد بنويسي
select name + '/' from dbo.Personal for xml path('')

این چیزی که گفتید فکر کنم همه رو تو یه فیلد یا ستون با هم جمع میکنه؛ ولی من منظورم از / این بود که هر کدوم از این فیلدها جدا باشن و مرج نکنه

dublsigma
دوشنبه 18 آذر 1392, 10:48 صبح
عدد n نمایانگر چه عددی میتونه باشه، 10، 100 یا 1000 یا حتی بیشتر؟
اگر تعداد ستون ها بیش از 4096 برسه با خطا مواجه خواهید شد.

اما اگر n عدد پایین باشه (مثلا 23) میتونید از این کوئری استفاده کنید:

;with cte as
(
select E.Title, Me.*,
row_number() over(order by monthlyelementID) rnk
from Element E
join MonthlyElement ME
ON E.elementID = ME.elementID
)
select *
from cte c1, cte c2, cte c3
where c1.rnk = 1
and c2.rnk = 2
and c3.rnk = 3;

micro_bhk
سه شنبه 19 آذر 1392, 12:58 عصر
عدد n نمایانگر چه عددی میتونه باشه، 10، 100 یا 1000 یا حتی بیشتر؟
اگر تعداد ستون ها بیش از 4096 برسه با خطا مواجه خواهید شد.

اما اگر n عدد پایین باشه (مثلا 23) میتونید از این کوئری استفاده کنید:

;with cte as
(
select E.Title, Me.*,
row_number() over(order by monthlyelementID) rnk
from Element E
join MonthlyElement ME
ON E.elementID = ME.elementID
)
select *
from cte c1, cte c2, cte c3
where c1.rnk = 1
and c2.rnk = 2
and c3.rnk = 3;


تعداد ستون ها تا اندازه ای که برای ساختش مجازیم هست.

مشکلم حل شد، البته از یه روش دیگه واسه این کار استفاده کردم که نیازی برای این تبدیل نداشت

به هر حال ممنون از کمکتون