امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 2
  • 1
  • 2
  • 3
  • 4
  • 5
select & Case or having
نویسنده پیام
mesmslampanah آفلاین
تازه وارد

ارسال‌ها: 9
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #1
select & Case or having
سلام من
یک جدول دارم با این ستون ها
pipId_fk
Timestamp
online
total
rate
watter15_min
حالا من دنبال یک کوییری هستم که
برای هر pipID_fk تولید رو به صوزت آنلاین و آفلاین حساب کنم وروند کارم هم ایمطوریه که برای آفلاین میام ستون watter15_minرو باهم جکع میکنم تو بازه ی دلخواه و محاسبه آنلاین هم به این صورت هستش که میام آخرین مقدار رو منهای اولین مقدار میکنم از ستون total. بعد میخام اینا تو دوتا ستون جدا نوشته شوند.م
۰۲-خرداد-۱۳۹۲, ۱۱:۵۰:۲۵
ارسال‌ها
پاسخ
hamed_Arfaee آفلاین
مدیر بخش
*****

ارسال‌ها: 1,334
موضوع‌ها: 231
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 1250
( 2634 تشکر در 730 ارسال )
ارسال: #2
RE: select & Case or having
با سلام

اول شما یک توضیح بدین این پروژه چی هست ؟
ورودی ؟ خروجی ؟ هدف ؟ یک سناریو در موردش بگین تا بشه درکش کرد .

حامد ارفعی

موفقيت، پيش رفتن است، نه به نقطه ي پايان رسيدن.(آنتوني رابينز)


تریگرها در SQL server

آیا میدانید SQL ای
۰۲-خرداد-۱۳۹۲, ۱۳:۱۳:۱۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy
mesmslampanah آفلاین
تازه وارد

ارسال‌ها: 9
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #3
RE: select & Case or having
(۰۲-خرداد-۱۳۹۲, ۱۳:۱۳:۱۸)hamed_Arfaee نوشته است: با سلام

اول شما یک توضیح بدین این پروژه چی هست ؟
ورودی ؟ خروجی ؟ هدف ؟ یک سناریو در موردش بگین تا بشه درکش کرد .



خب فکر کنم واضح گفتم ،اصل پروژه این هستش که ما یک تایمر داریم هر یک یک ربع یکبار میاد اطلاعات رو در جدول Timestamp ذخیره میکنه.حالا ما توی گزارشاتمون برای محاسبه تولید میاییم تولید رو در حالت برای هر چاه حساب میکنیم هم جاهایی که چاه آنلاین بوده و هم جاهایی که چاه آفلاین بوده.که متد محاسبه تولید آنلاین و آفلاین متفاوته.و ما هر دوتا تولید رو لازم دریم.
لطفا اگه کسی از دستر Case استفاده کرده به طور حرفه ای مثال داره لطفا راهنمایی کنه.یا از اشرهدل
۰۲-خرداد-۱۳۹۲, ۲۱:۰۷:۳۸
ارسال‌ها
پاسخ
Agary آفلاین
كاربر دو ستاره
**

ارسال‌ها: 79
موضوع‌ها: 12
تاریخ عضویت: اردیبهشت ۱۳۸۷

تشکرها : 49
( 87 تشکر در 42 ارسال )
ارسال: #4
RE: select & Case or having
با سلام و عرض صمیمانه ترین احترامات :
میشه در مورد
نقل قول: بعد میخام اینا تو دوتا ستون جدا نوشته
یه کم بیش تر توضیح بدید .
۰۳-خرداد-۱۳۹۲, ۰۱:۴۵:۱۶
وب سایت ارسال‌ها
پاسخ
mesmslampanah آفلاین
تازه وارد

ارسال‌ها: 9
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #5
RE: select & Case or having
           
(۰۳-خرداد-۱۳۹۲, ۰۱:۴۵:۱۶)Agary نوشته است: با سلام و عرض صمیمانه ترین احترامات :
میشه در مورد
نقل قول: بعد میخام اینا تو دوتا ستون جدا نوشته
یه کم بیش تر توضیح بدید .

سلام
می خام خروجی این شکلی باشه.شکل رو ببینید لطفا

یه هم چین دستوری میخام با سینتکس درستش
select pipId_fk ,online_tolid ,offline_Tolid
case online=1

select max(total)-min(tota)
case 0 select sum (watter_15min)
(آخرین ویرایش در این ارسال: ۰۴-خرداد-۱۳۹۲, ۰۸:۳۴:۵۳، توسط mesmslampanah.)
۰۴-خرداد-۱۳۹۲, ۰۸:۳۱:۲۲
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #6
RE: select & Case or having
خب شما میخواهی تو 2 تا ستون مجزی باشه با case یه کم دردسرش زیاده
تقریبا به این شکل در میاد
کد:
select pipId_fk,
(case pipId_fk when 'offline'then select sum(watter15_min)from table else null end)online_tolid
,
(case pipId_fk when 'online'then select (max(total)-min(total))from table else null end)offline_Tolid from table

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۰۴-خرداد-۱۳۹۲, ۰۹:۵۴:۵۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, aKaReZa75
mesmslampanah آفلاین
تازه وارد

ارسال‌ها: 9
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #7
RE: select & Case or having
(۰۴-خرداد-۱۳۹۲, ۰۹:۵۴:۵۶)lord_viper نوشته است: خب شما میخواهی تو 2 تا ستون مجزی باشه با case یه کم دردسرش زیاده
تقریبا به این شکل در میاد
کد:
select pipId_fk,
(case pipId_fk when 'offline'then select sum(watter15_min)from table else null end)online_tolid
,
(case pipId_fk when 'online'then select (max(total)-min(total))from table else null end)offline_Tolid from table

متشکرم از راهنمایی تون ولی اینجا 2 مسیله وجود دره
1-همه ی _pipId ها رو میخواهیم
2-online یک ستون هستش که یا یک یا صفر
case روی pipId_fk به دردم نمی خوره.
به فایل ضمیمه نگاهی بندازین.در پست قبل تا دقیق متوجه منظورم بشین

   


ساختار جدول من این شکلی ومن می خواهم خروجی کوییری ام گروپ شده باشه بر اساس کد چاه(pipId_fk) , وبرای هر چاه یک تولید آنلاین محاسبه کنم و هم آفلاین
(آخرین ویرایش در این ارسال: ۰۴-خرداد-۱۳۹۲, ۱۱:۰۹:۴۳، توسط mesmslampanah.)
۰۴-خرداد-۱۳۹۲, ۱۰:۵۵:۲۳
ارسال‌ها
پاسخ
Agary آفلاین
كاربر دو ستاره
**

ارسال‌ها: 79
موضوع‌ها: 12
تاریخ عضویت: اردیبهشت ۱۳۸۷

تشکرها : 49
( 87 تشکر در 42 ارسال )
ارسال: #8
RE: select & Case or having
دوست عزیز و بزرگ وارم سلام
این دستور را یک بررسی بفرمایید ، شاید به کارتان آمد :
کد:
DECLARE @MAX INT
SELECT TOP (1) @MAX = Total
FROM YOUR_DB_NAME ORDER BY Total DESC

DECLARE @MIN INT
SELECT TOP (1) @MIN = Total
FROM YOUR_DB_NAME ORDER BY Total ASC

DECLARE @Watter15_Min FLOAT
SELECT @Watter15_Min = SUM(Watter15_Min)
FROM YOUR_DB_NAME

SELECT Pipeid_FK, Online_Tolid ,Offline_Tolid ,Total =
CASE Online
    WHEN 'True' THEN @MAX-@MIN
    WHEN 'False' THEN @Watter15_Min
END
FROM YOUR_DB_NAME
GO
بازم ببخشید اگر بی ربط جواب دادم . به هر شکل تلاش کردم چیزی که شما خواستید رو پیاده کنم .
اگر موفقیت آمیز بود ما رو بی خبر نذارید :)) !
موفق باشید .
(آخرین ویرایش در این ارسال: ۰۶-خرداد-۱۳۹۲, ۰۹:۴۹:۱۱، توسط Agary.)
۰۶-خرداد-۱۳۹۲, ۰۹:۴۵:۰۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, mesmslampanah
mesmslampanah آفلاین
تازه وارد

ارسال‌ها: 9
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #9
RE: select & Case or having
(۰۶-خرداد-۱۳۹۲, ۰۹:۴۵:۰۹)Agary نوشته است: دوست عزیز و بزرگ وارم سلام
این دستور را یک بررسی بفرمایید ، شاید به کارتان آمد :
کد:
DECLARE @MAX INT
SELECT TOP (1) @MAX = Total
FROM YOUR_DB_NAME ORDER BY Total DESC

DECLARE @MIN INT
SELECT TOP (1) @MIN = Total
FROM YOUR_DB_NAME ORDER BY Total ASC

DECLARE @Watter15_Min FLOAT
SELECT @Watter15_Min = SUM(Watter15_Min)
FROM YOUR_DB_NAME

SELECT Pipeid_FK, Online_Tolid ,Offline_Tolid ,Total =
CASE Online
    WHEN 'True' THEN @MAX-@MIN
    WHEN 'False' THEN @Watter15_Min
END
FROM YOUR_DB_NAME
GO
بازم ببخشید اگر بی ربط جواب دادم . به هر شکل تلاش کردم چیزی که شما خواستید رو پیاده کنم .
اگر موفقیت آمیز بود ما رو بی خبر نذارید :)) !
موفق باشید .

سلام از ماست،آره اسخ شما دقیقا همون چیزیه که من دنبالشم .اما این روش حاصل رو برای یک pip به من میده،اگه بخوام همین روش رو برای چند چاه پیاده کنم غیر از دستور Cursor راه دیگه ای ندارم؟
(آخرین ویرایش در این ارسال: ۰۷-خرداد-۱۳۹۲, ۱۰:۰۳:۰۵، توسط Di Di.)
۰۷-خرداد-۱۳۹۲, ۰۸:۲۴:۴۲
ارسال‌ها
پاسخ
Agary آفلاین
كاربر دو ستاره
**

ارسال‌ها: 79
موضوع‌ها: 12
تاریخ عضویت: اردیبهشت ۱۳۸۷

تشکرها : 49
( 87 تشکر در 42 ارسال )
ارسال: #10
RE: select & Case or having
سلام بزرگوار از ته دل خوشحالم که به دردتون خورد .
امیدوارم این یکی کمک بیشتری به شما بکنه :
کد:
SELECT  PipeId_FK, Online AS Online, SUM(Watter15_Min) AS Watter15_Min
, MAX(Total) Total_MAX, MIN(Total) AS Total_MIN
, ONLINE_Tolid =
CASE Online
    WHEN 'True' THEN
        MAX(Total) - MIN(Total)
    ELSE
        Null
END
, OFFLINE_Tolid =
CASE Online
    WHEN 'False' THEN
    SUM(Watter15_Min)
    ELSE
        Null
END
FROM YUOR_TABLE_NAME GROUP BY PipeId_FK, Online
GO
بازم شرمنده اگر مشکل حل نشد .
ما رو بی خبر نذارید . :)
۰۷-خرداد-۱۳۹۲, ۱۲:۲۶:۳۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : mesmslampanah, babyy
mesmslampanah آفلاین
تازه وارد

ارسال‌ها: 9
موضوع‌ها: 2
تاریخ عضویت: مهر ۱۳۹۱

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #11
RE: select & Case or having
(۰۷-خرداد-۱۳۹۲, ۱۲:۲۶:۳۲)Agary نوشته است: سلام بزرگوار از ته دل خوشحالم که به دردتون خورد .
امیدوارم این یکی کمک بیشتری به شما بکنه :
کد:
SELECT  PipeId_FK, Online AS Online, SUM(Watter15_Min) AS Watter15_Min
, MAX(Total) Total_MAX, MIN(Total) AS Total_MIN
, ONLINE_Tolid =
CASE Online
    WHEN 'True' THEN
        MAX(Total) - MIN(Total)
    ELSE
        Null
END
, OFFLINE_Tolid =
CASE Online
    WHEN 'False' THEN
    SUM(Watter15_Min)
    ELSE
        Null
END
FROM YUOR_TABLE_NAME GROUP BY PipeId_FK, Online
GO
بازم شرمنده اگر مشکل حل نشد .
ما رو بی خبر نذارید . :)

واقعا ممنون از راهنماییتون حتما در فرصت کافی تستش می کنم و بهتون میگم.منم واقعا ممنونم که وقت میذارین وبه سوالات من پاسخ میدید.
۰۷-خرداد-۱۳۹۲, ۱۶:۴۳:۵۱
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [فوری] کمک برای دستور select Mrirani 1 975 ۰۵-مرداد-۱۳۹۸, ۰۲:۵۳:۳۲
آخرین ارسال: far_222000
  SELECT The.Ghost 2 2,672 ۱۶-خرداد-۱۳۹۵, ۰۹:۵۸:۰۹
آخرین ارسال: lord_viper
  دستور SELECT با WHERE تر كيبي! Mohandese_Javan 5 6,644 ۲۷-تير-۱۳۹۱, ۰۸:۵۸:۲۱
آخرین ارسال: Di Di
  چرا؟ select sav68 21 14,928 ۲۴-اسفند-۱۳۸۷, ۱۶:۵۹:۳۸
آخرین ارسال: sav68

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS