PDA

View Full Version : اشکال در کوئری نمایش آخرین خرید مشتری



valentine093
سه شنبه 04 فروردین 1394, 13:32 عصر
با سلام و تبریک سال نو خدمت اساتید محترم
من یک کوئری نیاز دارم که تاریخ و مبلغ آخرین خرید مشتری ها رو نشون بده ولی با این کوئری(کوئری اول) که نوشتم تاریخ و مبلغ خریدها رو کلا نشون میده! میتونم با کوئری دوم تاریخ و کد مشتری مربوط به آخرین خرید رو بدست بیارم ولی وقتی میخوام مبلغ آخرید خرید رو هم بیارم نمیشه و ماه های قبلی رو هم میاره!عکس جدولها رو میفرستم ؛ممنون میشم اساتید راهنمایی بفرایند.:متفکر:
کوئری اول:
select distinct customers_code,max(invoices_date) as last_buy_date,invoices_price as last_buy_price from sreamic_reports_view group by customers_code,invoices_price
نتیجه:
last_buy_price last_buy_date customers_code


1176 1393/08/24 1000
1178 1393/08/29 1000
1178 1393/12/27 5000
1191 1393/11/01 5000
1191 1393/08/29 50000
1179 1393/08/29 150000
1176 1393/08/29 201000

کوئری دوم :
select customers_code,MAX(invoices_date) as last_buy_date from sreamic_reports_view group by customers_code
نتیجه:
last_buy_date customers_code
1176 1393/08/29
1178 1393/12/27
1179 1393/08/29
1191 1393/11/01

SabaSabouhi
چهارشنبه 05 فروردین 1394, 09:55 صبح
با سلام و تبریک سال نو خدمت اساتید محترم
من یک کوئری نیاز دارم که تاریخ و مبلغ آخرین خرید مشتری ها رو نشون بده ولی با این کوئری(کوئری اول) که نوشتم تاریخ و مبلغ خریدها رو کلا نشون میده! میتونم با کوئری دوم تاریخ و کد مشتری مربوط به آخرین خرید رو بدست بیارم ولی وقتی میخوام مبلغ آخرید خرید رو هم بیارم نمیشه و ماه های قبلی رو هم میاره!عکس جدولها رو میفرستم ؛ممنون میشم اساتید راهنمایی بفرایند.:متفکر:
کوئری اول:
select distinct customers_code,max(invoices_date) as last_buy_date,invoices_price as last_buy_price from sreamic_reports_view group by customers_code,invoices_price
نتیجه:
last_buy_price last_buy_date customers_code

1176 1393/08/24 1000
1178 1393/08/29 1000
1178 1393/12/27 5000
1191 1393/11/01 5000
1191 1393/08/29 50000
1179 1393/08/29 150000
1176 1393/08/29 201000

کوئری دوم :
select customers_code,MAX(invoices_date) as last_buy_date from sreamic_reports_view group by customers_code
نتیجه:
last_buy_date customers_code
1176 1393/08/29
1178 1393/12/27
1179 1393/08/29
1191 1393/11/01

سلام
روشت اشتباه هست.
برای هم‌چنین کارهایی مرحله به مرحله برو جلو.
اول فهرست مشتریان رو بگیر
دوم آخرین کد مربوط به خرید رو پیدا کن
و در آخر فیلدهای مورد نظرت رو پیدا کن


SELECT c.customer_code, o.*
FROM tbl_customers c
JOIN ( SELECT customer_code, LastOrderCode = Max( order_code ) FROM tbl_products_order GROUP BY customerCode ) x on x.customer_code = c.customer_code
JOIN tbl_procusts_order o on o.order_code = LastOrderCode


ضمن این که خیلی خوبه از pinglish استفاده نکردی، اما روش نام‌گذاری‌ات یه کم غیر متداول هست.

صبا صبوحی

argess
چهارشنبه 05 فروردین 1394, 22:56 عصر
با سلام خدمت شما دوست گرامی

چندی پیش در انجمن مجیک سورس یک پست گذاشته ام در مورد دستور Outer Apply که از امکانات جدید SQL Server است.


فکر کنم این دستور یک شاهکار در SQL Server است.

در ضمن تمام کوئری های از این قبیل را می توان توسط دستور Outer Apply نوشت.

مواردی را که من ذکر می کنم درباره SQL Server و یا نرم افزار حسابداری از دو منبع زیر بدست می آورم.

valentine093
پنج شنبه 17 اردیبهشت 1394, 12:15 عصر
ممنون مهندس حل شد.شما گفتین روش نامگذاری من غیر متداوله منظورتون چی بود ؟انتخاب لغات یا چیزدیگه ای؟