View Full Version : محتویات یک جدول
Boo Ali
دوشنبه 24 مرداد 1384, 16:42 عصر
لطفاً راهنمایی نمایید چگونه می توان محتویات یک جدول را بصورت یک رشته ، یعنی پشت سرهم داشته باشیم . مثلاً : ریاضی - فیزیک - شیمی
نه اینچنین : ریاضی
فیزیک
شیمی
AminSobati
دوشنبه 24 مرداد 1384, 23:16 عصر
use northwind
go
declare @var1 nvarchar(4000)
set @var1=''
select @var1=@var1+isnull(country,'')+'-' from customers
select @var1
hmm
سه شنبه 25 مرداد 1384, 08:36 صبح
خیلی جالبه
من این امکان رو تو اوراکل ندیدم
اگه دوستان اطلاعی دارن یه ندا بدن
majid_afra222
پنج شنبه 27 مرداد 1384, 16:39 عصر
سلام hmm عزیز
امکان بالا تو اوراکل وجود داره، هم با استفاده از PL/SQL و هم با استفاده از SQL.
مثال زیر یکی از چندین روش دسترسی به اطلاعات به شکل فوق هستش :
select max(decode(name_seq,1,last_name)) || ' ' ||
max(decode(name_seq,2,last_name)) || ' ' ||
max(decode(name_seq,3,last_name)) || ' ' ||
max(decode(name_seq,4,last_name)) || ' ' ||
max(decode(name_seq,5,last_name)) || ' ' ||
--تا 100 یا بیشتر ادامه بده تا همه ستونهای مرتبط در یه سطر قرار بگیرن
max(decode(name_seq,100,last_name)) emp_list
from ( select last_name,
row_number() over (partition by 1 order by 1) name_seq
from employees
)
order by 1;
این همیشه درست جواب میده ولی یه کمی کدنویسیش زیاده، باید به تعداد سطرهای پیش فرضت تابع decode رو تکرار کنی .
روشهای دیگه ای هم داره.
امیدوارم بدردت بخوره.
majid_afra222
پنج شنبه 27 مرداد 1384, 16:51 عصر
سلام
اینم الان نوشتم، اینم درسته تستش کردم :
with
ordemp as (select last_name from employees order by department_id),
seqemp as (select rownum rn, ordemp.last_name from ordemp),
paths as (select sys_connect_by_path(last_name,',') concat, rn
from seqemp o
connect by rn = prior rn + 1
start with rn = 1
)
select concat
from paths p
where p.rn = (select count(last_name) from employees);
مشکل استفاده از تابع decode رو هم نداره.
امیدوارم بدرت بخوره.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.