با سلام
من مي خوام يه select بنويسم كه sum يه فيلدرو در دو بازه مختلف در ستونهاي مجزا بهم برگردونه
ممنون ميشم راهنمايي كنيد
با سلام
من مي خوام يه select بنويسم كه sum يه فيلدرو در دو بازه مختلف در ستونهاي مجزا بهم برگردونه
ممنون ميشم راهنمايي كنيد
سلام
یکم بیشتر توضیح بده یا حداقل یک مثال بزن که چی می خواهید
select sum(case when FLD<x1 and FLD>x2 then FLD else 0 end)as FLD1,
sum(case when FLD<x3 and FLD>x4 then FLD else 0 end)as FLD2
From TBL
در دستورات case بیشتر مطالعه کنید . موفق باشید.
من مشكلم با اين
https://barnamenevis.org/showth...ght=sum&page=2
حل ميشه اما syntax error داره !
چه شكلي مي تونم حلش كنم؟
شرطهای where را در داخل متن به بعد از From منتقل کنید و پرانتز آخر باید بسته باشد و بعد از آن پرانتز آخر مثلا بنویسید TBL1 دیگر می توانید از آن استفاده کنید.من مشكلم با اين
https://barnamenevis.org/showth...ght=sum&page=2
حل ميشه اما syntax error داره !
چه شكلي مي تونم حلش كنم؟
اما فکر می کنم شما سووال خود را خیلی کلی طرح کرده اید چون اگر آنطور باشد که من فهمیده ام باید جواب قبلی مشکل شما را حل کرده باشد.
به هر حال پیروز باشید.
سلامشرطهای where را در داخل متن به بعد از From منتقل کنید و پرانتز آخر باید بسته باشد و بعد از آن پرانتز آخر مثلا بنویسید TBL1 دیگر می توانید از آن استفاده کنید.
من با گفته هاي شما اين كدرو نوشتم اما پيغام هاي زيرو ميده
Invalid column name 'dar_id'. و Invalid column name 'dar_price'.
use db
select sum(dar_id) as s1,sum(dar_price) as s2 from
(
select sum(dar_id) as s1,0 as s2 from orderr where (dar_date>='13870701' and dar_date<='13870731')
union
select 0 as s1,sum(dar_price) as s2 from orderr where (dar_date<'13870701')
)
orderr
آخرین ویرایش به وسیله *unos* : سه شنبه 09 مهر 1387 در 11:24 صبح دلیل: syntax
سلام
دوست عزیز وقتی به فیلدی نام جدید می دهید منبعد باید با نام جدید آن را فراخوانی کنی
اینم کد اصلاح شده
use db
select sum(s1) as s1,sum(s2) as s2 from
(
select sum(dar_id) as s1,0 as s2 from orderr where (dar_date>='13870701' and dar_date<='13870731')
union
select 0 as s1,sum(dar_price) as s2 from orderr where (dar_date<'13870701')
)
orderr
دست همه ي دوستان درد نكنه
مشكلم حل شد
با سلام
من هدفم از به دست آوردن مجموع یک فیلد در دو بازه مختلف این بود که بتونم یک همچین گزارشی بگیرم
با استفاده از این این جدول ها
اما با کمک دوستان و تلاش خودم نتونستم این گزارش رو درست کنم
اگر دوستان کمک کنند ممنون میشم
سلام
دوست عزیز جداول و فیلد ها را معرفی کردی ولی فیلدهای کلید و نحوه ارتباط جداول را مشخص نکردی !!
سلام
سلام
اولا یک خرده گیری چرا نام فیلد کلیدت با نام کلید خارجی در جدول دیگر فرق داره؟؟
دوما ببین اصلا من درست گرفتم
Select O.Dar_Date, OD.Od_P_C, OD.Od_Name, Sum(Od_P_F) AS Od_P_F, E.Et_Price
From Order_Details OD Inner Join Etebarat E ON OD.Od_P_C = E.Et_Id Inner Join Orderr O ON OD.Od_Id = O.Dar_Id
Group By O.Dar_Date, OD.Od_P_C, OD.Od_Name, E.Et_Price
Where O.Dar_Date = 'تاریخ درخواستی'
سلام
دقت بيشتري مي كنم در نام گذارياولا یک خرده گیری چرا نام فیلد کلیدت با نام کلید خارجی در جدول دیگر فرق داره؟؟
تقريبا همينو مي خوام البته...دوما ببین اصلا من درست گرفتم
Select O.Dar_Date, OD.Od_P_C, OD.Od_Name, Sum(Od_P_F) AS Od_P_F, E.Et_Price
From Order_Details OD Inner Join Etebarat E ON OD.Od_P_C = E.Et_Id Inner Join Orderr O ON OD.Od_Id = O.Dar_Id
Group By O.Dar_Date, OD.Od_P_C, OD.Od_Name, E.Et_Price
Where O.Dar_Date = 'تاریخ درخواستی'
تا اين قسمت رو خودم تونستم انجام بدم اما مشكل من اينه كه SUM(Order_Detial.Cd_P_F) رو در دو بازه مي خوام
SELECT Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price, SUM(Order_Detial.Cd_P_F) AS curr_month
FROM Order_Detial INNER JOIN
Orderr ON Order_Detial.Od_P_C = Orderr.Dar_Id INNER JOIN
Etebarat ON Order_Detial.Od_Id = Etebarat.Et_Id
WHERE (Orderr.Dar_Date >= '13870701' AND Orderr.Dar_Date <= '13870730')
GROUP BY Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price, Orderr.Dar_Date
SUM(Order_Detial.Cd_P_F) AS last_months WHERE (Orderr.Dar_Date < '13870701'
ممنون از اين كه براي رفع مشكلم وقت مي زاريد
آخرین ویرایش به وسیله *unos* : پنج شنبه 11 مهر 1387 در 13:17 عصر دلیل: syntax
سلام
تست کن ببین کدوم راضیت میکنه
SELECT Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price, Sum(curr_month) AS curr_month, Sum(Last_Month) As Last_Month
From (
SELECT Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price, Order_Detial.Cd_P_F AS curr_month, 0 As Last_Month
FROM Order_Detial INNER JOIN
Orderr ON Order_Detial.Od_P_C = Orderr.Dar_Id INNER JOIN
Etebarat ON Order_Detial.Od_Id = Etebarat.Et_Id
WHERE (Orderr.Dar_Date >= '13870701' AND Orderr.Dar_Date <= '13870730')
Union All
SELECT Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price, 0 As curr_month, Order_Detial.Cd_P_F AS Last_Month
FROM Order_Detial INNER JOIN
Orderr ON Order_Detial.Od_P_C = Orderr.Dar_Id INNER JOIN
Etebarat ON Order_Detial.Od_Id = Etebarat.Et_Id
WHERE (Orderr.Dar_Date < '13870701')) T
GROUP BY Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price, Orderr.Dar_Date
SELECT Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price,
Sum(Case When (Orderr.Dar_Date >= '13870701' AND Orderr.Dar_Date <= '13870730') Then Order_Detial.Cd_P_F Else 0 End ) AS curr_month,
Sum(Case When (Orderr.Dar_Date < '13870701') Then Order_Detial.Cd_P_F Else 0 End ) As Last_Month
FROM Order_Detial INNER JOIN
Orderr ON Order_Detial.Od_P_C = Orderr.Dar_Id INNER JOIN
Etebarat ON Order_Detial.Od_Id = Etebarat.Et_Id
GROUP BY Order_Detial.Od_P_C, Order_Detial.Od_Name, Etebarat.Et_Price, Orderr.Dar_Date
ممنون از كدتون
دومي كارمو را انداخت اما اولي error nhaj داشت
متن error رو بعدا مي زارم
بازم ممنون.