سلام وقت بخیر.
آیا RANGE فقط در MYSQL اجازه استفاده از BETWEEN N PRECEDING AND N FOLLOWING را میدهد ؟؟
چون در SQL Server این خطا رو میده !
.RANGE is only supported with UNBOUNDED and CURRENT ROW window frame delimiters
سلام وقت بخیر.
آیا RANGE فقط در MYSQL اجازه استفاده از BETWEEN N PRECEDING AND N FOLLOWING را میدهد ؟؟
چون در SQL Server این خطا رو میده !
.RANGE is only supported with UNBOUNDED and CURRENT ROW window frame delimiters
سلام وقت بخیر.
آیا RANGE فقط در MYSQL اجازه استفاده از BETWEEN N PRECEDING AND N FOLLOWING را میدهد ؟؟
چون در SQL Server این خطا رو میده !
.RANGE is only supported with UNBOUNDED and CURRENT ROW window frame delimiters
سلام، وقت شما هم بخیر.
بله، RANGE BETWEEN N PRECEDING AND N FOLLOWING در همه دیتابیسها پشتیبانی نمیشه. در SQL Server، عبارت RANGE با مقادیر عددی برای PRECEDING و FOLLOWING پشتیبانی نمیشه و به همین دلیل مثال بالا در SQL Server اجرا نمیشه. این موضوع در مستندات رسمی Microsoft هم ذکر شده.
https://learn.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver17
این مثال بر اساس SQL Dialectهایی نوشته شده که RANGE با offset عددی رو پشتیبانی میکنن، مثل MySQL. اگر هدف SQL Server باشه، برای «تعداد ردیفهای قبل و بعد» باید از ROWS استفاده کرد؛ اما اگر منظور «محدوده مقداری ±۵» باشه، ROWS معادل نیست و باید با روشهایی مثل JOIN یا APPLY پیادهسازی بشه.
سلام، وقت شما هم بخیر.
بله، RANGE BETWEEN N PRECEDING AND N FOLLOWING در همه دیتابیسها پشتیبانی نمیشه. در SQL Server، عبارت RANGE با مقادیر عددی برای PRECEDING و FOLLOWING پشتیبانی نمیشه و به همین دلیل مثال بالا در SQL Server اجرا نمیشه. این موضوع در مستندات رسمی Microsoft هم ذکر شده.
https://learn.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver17
این مثال بر اساس SQL Dialectهایی نوشته شده که RANGE با offset عددی رو پشتیبانی میکنن، مثل MySQL. اگر هدف SQL Server باشه، برای «تعداد ردیفهای قبل و بعد» باید از ROWS استفاده کرد؛ اما اگر منظور «محدوده مقداری ±۵» باشه، ROWS معادل نیست و باید با روشهایی مثل JOIN یا APPLY پیادهسازی بشه.
سلام، وقت شما هم بخیر.
بله، RANGE BETWEEN N PRECEDING AND N FOLLOWING در همه دیتابیسها پشتیبانی نمیشه. در SQL Server، عبارت RANGE با مقادیر عددی برای PRECEDING و FOLLOWING پشتیبانی نمیشه و به همین دلیل مثال بالا در SQL Server اجرا نمیشه. این موضوع در مستندات رسمی Microsoft هم ذکر شده.
https://learn.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver17
این مثال بر اساس SQL Dialectهایی نوشته شده که RANGE با offset عددی رو پشتیبانی میکنن، مثل MySQL. اگر هدف SQL Server باشه، برای «تعداد ردیفهای قبل و بعد» باید از ROWS استفاده کرد؛ اما اگر منظور «محدوده مقداری ±۵» باشه، ROWS معادل نیست و باید با روشهایی مثل JOIN یا APPLY پیادهسازی بشه.
سلام وقت بخیر. آیا RANGE فقط در MYSQL اجازه استفاده از BETWEEN N PRECEDING AND N FOLLOWING را میدهد ؟؟ چون در SQL Server این خطا رو میده ! .RANGE is only supported with UNBOUNDED and CURRENT ROW window frame delimiters
سلام، وقت شما هم بخیر. بله، RANGE BETWEEN N PRECEDING AND N FOLLOWING در همه دیتابیسها پشتیبانی نمیشه. در SQL Server، عبارت RANGE با مقادیر عددی برای PRECEDING و FOLLOWING پشتیبانی نمیشه و به همین دلیل مثال بالا در SQL Server اجرا نمیشه. این موضوع در مستندات رسمی Microsoft هم ذکر شده. https://learn.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver17 این مثال بر اساس SQL Dialectهایی نوشته شده که RANGE با offset عددی رو پشتیبانی میکنن، مثل MySQL. اگر هدف SQL Server باشه، برای «تعداد ردیفهای قبل و بعد» باید از ROWS استفاده کرد؛ اما اگر منظور «محدوده مقداری ±۵» باشه، ROWS معادل نیست و باید با روشهایی مثل JOIN یا APPLY پیادهسازی بشه.
مرسی از راهنمایی تون لطف کردین.
خواهش میکنم
در واقع partition by رو میشه یه چیزی شبیه به group by اما برای window function ها در نظر گرفت.