ورود

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