PDA

View Full Version : select transform و واکشی بیش از یک فیلد



bftarane
شنبه 30 خرداد 1394, 23:33 عصر
سلام، من با کمک کوئری زیر

@"TRANSFORM First(Price)SELECT ChartDate
FROM (SELECT P.ChartTitle,
R.Price,
R.ChartDate
FROM tbl_Pd AS P
INNER JOIN tbl_chart AS R ON P.ID = R.PdID
WHERE R.ChartDate >= Date()-4)
GROUP BY ChartDate order by ChartDate desc
PIVOT ChartTitle"
اطلاعات جدول زیر و جدول محصولات (از جدول محصولات فقط عنوان محصول رو واکشی می کنم) رو
132454
به صورت زیر در گریدویو نشون می دم
132453
همونطور که می بینید در جدول یک فیلد NotExist هم وجود داره، حالا چطور میشه اگه اون فیلد NotExist برابر با false بود عبارت موجود نیست رو در کنار قیمت مربوطه نمایش داد؟
در واقع چطور میشه این فیلد رو واکشی کرد و در صورت false بودن یک عبارت فارسی جاش نمایش داد؟
تشکر

xsbehx
یک شنبه 31 خرداد 1394, 01:08 صبح
select field1,field2,...,fieldn,case when NotExist = false then 'موجود نیست' when fldTerm = true then 'موجود است' end as 'موجودی کالا'

تو select به جای field1,...filedn فیلدهای مورد نظر خودتو بزار

bftarane
یک شنبه 31 خرداد 1394, 09:46 صبح
ممنون من به هر دو شکل پایین نوشتم ولی Syntax error می گیره
string sql = @"TRANSFORM First(select Price,NotExist,case when NotExist = false then 'موجود نیست' when fldTerm = true then 'موجود است' end as 'موجودی کالا')SELECT ChartDate
FROM (SELECT P.ChartTitle,
R.Price,
R.NotExist,
R.ChartDate
FROM tbl_Pd AS P
INNER JOIN tbl_chart AS R ON P.ID = R.PdID
WHERE R.ChartDate >= Date()-4)
GROUP BY ChartDate order by ChartDate desc
PIVOT ChartTitle";
.................
string sql = @"TRANSFORM First(select Price,NotExist,case when NotExist = false then 'موجود نیست')SELECT ChartDate
FROM (SELECT P.ChartTitle,
R.Price,
R.NotExist,
R.ChartDate
FROM tbl_Pd AS P
INNER JOIN tbl_chart AS R ON P.ID = R.PdID
WHERE R.ChartDate >= Date()-4)
GROUP BY ChartDate order by ChartDate desc
PIVOT ChartTitle";
لطفاً راهنمایی کنید.

xsbehx
یک شنبه 31 خرداد 1394, 12:13 عصر
اگر اشتباه نکنم کد شما برای Access هست نه SQL
چون من که نمی دونم TRANSFORM چی کار می کنه و منظورتون از string sql چی هست!؟
اگر هم می خواید سطر اول رو برگردونید نباید از first استفاده کنید. بلکه تو sql باید از top , order by استفاده کنید

اون ساختاری که بالا گفتم درسته فقط اخرش باید اسم جدولتون هم ذکر کنید مثلا from tblTest که من یادم رفته بود بزارم.
دوباره اینجا می زارم


select field1,field2,...,fieldn,case when NotExist = false then 'موجود نیست' when fldTerm = true then 'موجود است' end as 'موجودی کالا' from tblTest

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