View Full Version : سوال در مورد نحوه گرفتن column بعنوان يك ركورد
Leila-2011
شنبه 04 خرداد 1392, 07:32 صبح
سلام
من يه جدول دارم با اين مقادير : كد پروژه و 5 تا ستون كه از نوع بيت هستندو ميتونن true يا false باشن و كد پروژه كليده
ميخام كه به ازاري هر كد پروژه نام ستونهايي كه مقدار true داره رو بگيرم و به يه combo box بايند كنم
لطفا راهنماييم كنيد اصلا همچين كاري امكان پذير هست ؟؟ اگه هست از چه راهي؟؟؟
ضروريه دوستان لطفا اگه چيزي ميدونيد كمك كنيد.
مرسي
محمد سلیم آبادی
شنبه 04 خرداد 1392, 21:30 عصر
میتونید یک نمونه داده و نتیجه مورد نظر رو ارسال کنید. حد اقل برای من مطلب گنگ و غیر شفاف
Leila-2011
یک شنبه 05 خرداد 1392, 12:52 عصر
اين جدولم هست :
ProjID = '9005 '
GMAW = true
FCAW=True
GTAW = False
SMAW = true
كه من ميخام خروجيم به ازاي كد پروژه اين باشه :
GMAW
FCAW
SMAW
و بتونم به كمبوباكس بايندش كنم
مرسي
محمد سلیم آبادی
یک شنبه 05 خرداد 1392, 13:26 عصر
كه من ميخام خروجيم به ازاي كد پروژه اين باشه :
GMAW
FCAW
SMAW
این ها هر کدام یک سطر هستند دیگه؟
یعنی نتیجه ای که دنبالش هستین اینه؟
column1 column2
------------- -------------
'9005 ' GMAW
'9005 ' FCAW
'9005' SMAW
hramezani
یک شنبه 05 خرداد 1392, 15:14 عصر
این به دردت میخوره ؟
select case when GMAW = true then 'GMAW' end
,case when FCAW = true then 'FCAW' end
,case when GTAW = true then 'GTAW' end
,case when SMAW = true then 'SMAW' end
from tbl
Leila-2011
دوشنبه 06 خرداد 1392, 12:35 عصر
مرسي پيشنهاد خوبي بود ولي بازم مقادير NULL هم علاوه بر اون مقاديري كه ميخام بهم ميده
يعني به ازاي مقادير false بهم Null ميده
Leila-2011
دوشنبه 06 خرداد 1392, 12:37 عصر
این ها هر کدام یک سطر هستند دیگه؟
یعنی نتیجه ای که دنبالش هستین اینه؟
column1 column2
------------- -------------
'9005 ' GMAW
'9005 ' FCAW
'9005' SMAW
نه GMAW و FCAW و SMAW هركدوم يه ستونن از نوع بيت
hramezani
دوشنبه 06 خرداد 1392, 15:30 عصر
خب اگه قراره به یه کمبو باکس وصل کنی از این راه هم میتونی بری:
من یه جدول تستی ساختم
CREATE TABLE [dbo].[Table_1](
[id] [int] NULL,
[c1] [bit] NULL,
[c2] [bit] NULL,
[c3] [bit] NULL,
[c4] [bit] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[Table_1] ([id], [c1], [c2], [c3], [c4]) VALUES (1, 1, 0, 1, 0)
INSERT [dbo].[Table_1] ([id], [c1], [c2], [c3], [c4]) VALUES (2, 0, 1, 1, 0)
و روی اون , این query رو نوشتم :
declare @id int=1
select * from (
select case when c1 = 1 then 'c1' end as t from Table_1 where id=@id
union select case when c2 = 1 then 'c2' end as t from Table_1 where id=@id
union select case when c3 = 1 then 'c3' end as t from Table_1 where id=@id
union select case when c4 = 1 then 'c4' end as t from Table_1 where id=@id
) as tt where t is not null
pashna
دوشنبه 06 خرداد 1392, 21:58 عصر
سلام،
اگر درست متوجه شده باشم، شما میخواید جای سطر و ستون رو عوض کنید. اگر اینطوری هست چرا از Pivot استفاده نمیکنید ؟
Leila-2011
سه شنبه 07 خرداد 1392, 08:23 صبح
سلام،
اگر درست متوجه شده باشم، شما میخواید جای سطر و ستون رو عوض کنید. اگر اینطوری هست چرا از Pivot استفاده نمیکنید ؟
فكر ميكنم Pivot براي اوردن ركورد به ستون بكار ميره من عكس اون كارو ميخام انجام بدم
محمد سلیم آبادی
سه شنبه 07 خرداد 1392, 09:50 صبح
خب اگه قراره به یه کمبو باکس وصل کنی از این راه هم میتونی بری:
و روی اون , این query رو نوشتم :
declare @id int=1
select * from (
select case when c1 = 1 then 'c1' end as t from Table_1 where id=@id
union select case when c2 = 1 then 'c2' end as t from Table_1 where id=@id
union select case when c3 = 1 then 'c3' end as t from Table_1 where id=@id
union select case when c4 = 1 then 'c4' end as t from Table_1 where id=@id
) as tt where t is not null
کوئری که نوشتین را به این شکل میشه ساده کرد:
declare @id int=1
select 'c1' from Table_1 where id=@id and c1 = 1
union
select 'c2' from Table_1 where id=@id and c2 = 1
union
select 'c3' from Table_1 where id=@id and c3 = 1
union
select 'c4' from Table_1 where id=@id and c4 = 1
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.