নিম্নলিখিত কোয়েরিটি SUM
কলাম স্টোর টেবিলের সাথে উইন্ডোড সম্পাদন 1500 total rows
করে, যার প্রত্যেকটির মান 0 বা 1 থাকে এবং এটি INT
ডেটা প্রকারকে উপচে ফেলে । ইহা কি জন্য ঘটিতেছে?
SELECT a, p, s, v, m, n,
SUM(CASE WHEN n IS NULL THEN 0 ELSE 1 END)
OVER (PARTITION BY s, v, a ORDER BY p) AS lastNonNullPartition
FROM (
SELECT a, p, s, v, m, n,
RANK() OVER (PARTITION BY v, s, a, p ORDER BY m) AS rank
FROM #t /* A columnstore table with 1,500 rows */
) x
WHERE x.rank = 1
--Msg 8115, Level 16, State 2, Line 1521
--Arithmetic overflow error converting expression to data type int.
সম্পূর্ণ স্ক্রিপ্ট
সম্পূর্ণরূপে অন্তর্ভুক্ত প্রজনন স্ক্রিপ্টের জন্য এই ফাইলটি দেখুন।
অনুসন্ধান পরিকল্পনা
এখানে একটি এনোটেটেড আনুমানিক ক্যোয়ারী প্ল্যান রয়েছে (প্ল্যানটি প্লাস্ট করে দেওয়ার পুরো এক্সএমএল )।
অনুরূপ ক্যোয়ারী যা সফলভাবে কার্যকর হয়
নিম্নলিখিত নিম্নলিখিত পরিবর্তনগুলি করা হয়, ত্রুটি ঘটবে না:
8649
সমান্তরালতার জন্য ব্যয় প্রান্তিক নির্বিশেষে একটি সমান্তরাল পরিকল্পনা পছন্দ করতে ট্রেস পতাকা ব্যবহার করুন9453
ব্যাচ মোড অক্ষম করতে ট্রেস পতাকা ব্যবহার করুন- ব্যবহার করুন
COUNT
পরিবর্তে অ্যাগ্রিগেশন ফাংশনSUM
ফাংশন WHERE x.rank = 1
প্রিকিকেট সরান
উদাহরণস্বরূপ, এই ক্যোয়ারীটি সফলভাবে সম্পাদন করে:
SELECT a, p, s, v, m, n,
SUM(CASE WHEN n IS NULL THEN 0 ELSE 1 END)
OVER (PARTITION BY s, v, a ORDER BY p) AS lastNonNullPartition
FROM (
SELECT a, p, s, v, m, n,
RANK() OVER (PARTITION BY v, s, a, p ORDER BY m) AS rank
FROM #t /* A columnstore table with 1,500 rows */
) x
WHERE x.rank = 1
OPTION (QUERYTRACEON 9453/* Disable batch mode */)