PDA

View Full Version : یک GROUP BY ویژه!



rezaei manesh
شنبه 15 اردیبهشت 1386, 18:27 عصر
سلام
من یک سلکت دارم که باید از گروپ استفاده کنم در ازای شرط خاصی اما نمی خوام اون شرط در گروپ قرار بگیره؟!


SELECT RTRIM(LTRIM(PERNO)) AS PerNo, SUM(DAYS) AS Days, MMONTH
FROM eos_85.dbo.MahMamDt
GROUP BY RTRIM(LTRIM(PERNO)), MMONTH
HAVING (MAMURIATCODE = 2)OR
(MAMURIATCODE = 3)

در کد فوق MAMURIATCODE رو من نباید در گروه بندی شرکت بدم ..
چکار کنم؟

mzjahromi
شنبه 15 اردیبهشت 1386, 18:33 عصر
اگر منظورت رو درست فهمیده باشم باید اینجوری بنویسیش


SELECT RTRIM(LTRIM(PERNO)) AS PerNo, SUM(DAYS) AS Days, MMONTH
FROM eos_85.dbo.MahMamDt
where (MAMURIATCODE = 2)OR
(MAMURIATCODE = 3)
GROUP BY RTRIM(LTRIM(PERNO)), MMONTH

rezaei manesh
شنبه 15 اردیبهشت 1386, 18:47 عصر
سلام
ممنون از کد شما بله همینه
من این کد رو نوشته بودم اما چون خروجی عجیب بود چندین مورد تعداد ماموریت 31 بود فکر کردم اشتباه هستش وقتی شما هم همین رو نوشتید من دوباره چک کردم دیدم همون خروجی این دفعه رفتم سراغ داده ها و دیدم درسته انها ماموریت ماهانه داشتند
خیلی خیلی ممنون

rezaei manesh
یک شنبه 16 اردیبهشت 1386, 15:35 عصر
سلام
باز هم گروپ!
من یک سلکت نوشتم که این دفعه می خوام بخشی از مقدار یک فیلد در کروپ شرکت کنه اما نمی شه ؟


SELECT COUNT(*) AS Mamoriyat2NO, LTRIM(RTRIM(PERNO)) AS perno, LEFT(DDATE, 2) AS dateInteger
FROM DayMamDt
WHERE (MAMURIATCODE = 2)
GROUP BY PERNO, left(DDATE,2)

AminSobati
یک شنبه 16 اردیبهشت 1386, 23:45 عصر
Group By قبل از Select پردازش میشه پس Aliasهایی که در Select گرفتین رو نمیشناسه. لذا باید کل PERNO رو در Group By بیارین:


SELECT COUNT(*) AS Mamoriyat2NO, LTRIM(RTRIM(PERNO)) AS perno,
LEFT(DDATE, 2) AS dateInteger
FROM DayMamDt
WHERE (MAMURIATCODE = 2)
GROUP BY LTRIM(RTRIM(PERNO)), left(DDATE,2)

rezaei manesh
دوشنبه 17 اردیبهشت 1386, 07:50 صبح
بله حق با شماست
من این موضوع رو برای ddate رعایت کردم اما برای perno رو فراموش کردم
ممنون از جواب تون
مشکل حل شد