প্রশ্নগুলি কেন এমনভাবে পার্স করা হয়েছে যে বেশিরভাগ ধারাতে কলামের নাম ব্যবহারের বিষয়টি অস্বীকার করে?


16

কোনও ক্যোয়ারী লেখার চেষ্টা করার সময়, আমি খুঁজে পেলাম (শক্ত উপায়) যে এসকিউএল সার্ভার একটি কোয়েরি সম্পাদন করার সময় এসএলপেটগুলি পার্স করার আগে অনেক আগে কোয়েরিতে WHERE কে পার্স করে।

দুটিই MSDN ডক্স বলে যে সাধারণ লজিক্যাল পার্সিং অর্ডার যেমন যে কোন একটি সিলেক্ট প্রায় শেষ পার্স করা হয় (এইভাবে মধ্যে "এমন কোন বস্তু [ওরফে]" ত্রুটি অন্যান্য ক্লজ-এ একটি কলাম ওরফে ব্যবহার করার চেষ্টা ফলে)। এমনকি এএনএসআই স্ট্যান্ডার্ডের আনুগত্যের বিষয়গুলি উল্লেখ করে (যা এই আচরণটি এএনএসআই মানের অংশ বলে বোঝায়) মাইক্রোসফ্ট টিম তাকে গুলি করে হত্যা করে, যে কোনও জায়গায় এলিয়াস ব্যবহার করার অনুমতি দেওয়ার পরামর্শ দেওয়া হয়েছিল ।

প্রোগ্রামার হিসাবে (ডিবিএ নয়), আমি এই আচরণটি কিছুটা বিভ্রান্তিকর দেখতে পেয়েছি, যেহেতু আমার কাছে মনে হয় এটি কলাম এলিয়াসগুলি রাখার উদ্দেশ্যটি মূলত পরাভূত করে (বা খুব কমপক্ষে, কলামের এলিয়াসগুলি উল্লেখযোগ্যভাবে আরও শক্তিশালী করা যেতে পারে যদি তারা হয় ক্যোয়ারী এক্সিকিউশনে পূর্বে পার্স করা হয়েছে), যেহেতু আপনি প্রকৃতপক্ষে উপনামগুলি ব্যবহার করতে পারেন কেবলমাত্র জায়গাটি অর্ডারে রয়েছে। প্রোগ্রামার হিসাবে, মনে হচ্ছে এটি আরও শক্তিশালী, সুবিধাজনক এবং DRY তৈরির জন্য বিশাল সুযোগটি হারিয়েছে।

দেখে মনে হচ্ছে এটি এতই উদ্ভট বিষয় যে এটির কারণ দাঁড়ায়, তারপরে, কলাম এলিয়াসগুলি নির্বাচন এবং অর্ডার ব্যতীত অন্য কোনও ক্ষেত্রে মঞ্জুরি দেওয়া উচিত নয় এমন সিদ্ধান্ত নেওয়ার অন্যান্য কারণ রয়েছে, তবে সেই কারণগুলি কী কী?

উত্তর:


19

সারসংক্ষেপ

এটি করা যায়নি এমন কোনও যৌক্তিক কারণ নেই , তবে সুবিধাটি সামান্য এবং এমন কিছু সমস্যা রয়েছে যা অবিলম্বে প্রকাশ নাও হতে পারে।

গবেষণার ফল

আমি কিছু গবেষণা করেছি এবং কিছু ভাল তথ্য পেয়েছি। নিম্নলিখিতটি একটি নির্ভরযোগ্য প্রাথমিক উত্স থেকে সরাসরি উদ্ধৃতি (যা নাম বেনামে থাকতে চায়) 2012-08-09 17:49 GMT:

যখন এসকিউএল প্রথম আবিষ্কার করা হয়েছিল, তখন এর নির্বাচন বিভাগে এটির কোনও উপাধি ছিল না। এটি একটি গুরুতর সমস্যা ছিল যা সংশোধন করা হয়েছিল যখন ভাষাটি এএনএসআই দ্বারা প্রায় 1986 সালে মানক করা হয়েছিল।

ভাষাটি ছিল "অ-প্রক্রিয়াজাতীয়" - অন্য কথায়, কীভাবে ডেটা এটি সন্ধান করতে হবে তা উল্লেখ না করেই আপনি যে ডেটা চান তা বর্ণনা করার জন্য was সুতরাং, যতদূর আমি জানি, কোনও এসকিউএল বাস্তবায়ন প্রক্রিয়া করার আগে পুরো ক্যোয়ারীটি বিশ্লেষণ করতে পারে না তার কোনও কারণ নেই এবং এলিয়াসগুলি যে কোনও জায়গায় সংজ্ঞায়িত করা এবং সর্বত্র ব্যবহৃত হতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত কোয়েরিটি বৈধ না হওয়ার কোনও কারণ আমি দেখছি না:

select name, salary + bonus as pay
from employee
where pay > 100000

যদিও আমি মনে করি এটি একটি যুক্তিসঙ্গত ক্যোয়ারী, কিছু এসকিউএল-ভিত্তিক সিস্টেম কিছু বাস্তবায়ন-সম্পর্কিত কারণে এলিয়াসের ব্যবহারের উপর বিধিনিষেধের প্রবর্তন করতে পারে। এসকিউএল সার্ভার এটি করে শুনে আমি অবাক হই না।

আমি এসকিউএল-86 standard স্ট্যান্ডার্ড সম্পর্কে আরও গবেষণায় আগ্রহী এবং আধুনিক ডিবিএমএস কেন আরেফ পুনরায় ব্যবহার সমর্থন করে না, তবে এখনও এটির সাথে খুব দূরে যাওয়ার সময় পাইনি। শুরু করার জন্য, ডকুমেন্টেশনগুলি কোথায় পাবেন বা কমিটিটি কারা গঠন করেছেন তা কীভাবে সন্ধান করতে হবে তা আমি জানি না। কেউ সাহায্য করতে পারেন? এসকিউএল সার্ভার যে মূল সাইব্যাস পণ্যটি এসেছে তা সম্পর্কেও আমি আরও জানতে চাই।

এই গবেষণা এবং আরও কিছু ধারণা থেকে, আমি সন্দেহ করতে পেরেছি যে অন্যান্য অনুচ্ছেদে অন্যান্য উপকরণ ব্যবহার করা, যদিও সম্ভব হয়েছিল, অন্যান্য ভাষার বৈশিষ্ট্যের তুলনায় ডিবিএমএস নির্মাতাদের পক্ষে এত বেশি অগ্রাধিকার কখনও হয়নি। যেহেতু এটি খুব একটা বাধা নয়, ক্যোয়ার লেখক সহজেই কাজ করেছিলেন, অন্যান্য অগ্রগতিতে এর মধ্যে প্রচেষ্টা চালিয়ে যাওয়া অনুকূল নয়। অতিরিক্তভাবে, এটি মালিকানাধীন হবে কারণ এটি স্পষ্টতই এসকিউএল স্ট্যান্ডার্ডের অংশ নয় (যদিও আমি নিশ্চিত হয়ে সে বিষয়ে আরও অনুসন্ধানের অপেক্ষায় আছি) এবং সুতরাং এটি একটি সামান্য উন্নতি হবে, যা ডিবিএমএসের মধ্যে এসকিউএল সামঞ্জস্যতা ভঙ্গ করে। তুলনা করে, CROSS APPLY(যা সত্যই বাইরের রেফারেন্সকে অনুমতি দেওয়া কোনও উত্সযুক্ত টেবিলের চেয়ে বেশি কিছুই নয়) একটি বিশাল পরিবর্তন, যা মালিকানাধীন যখন অবিশ্বাস্য এক্সপ্রেশনাল পাওয়ারটি সহজেই অন্যভাবে সঞ্চালিত হয় না।

সর্বত্র এলিয়াস ব্যবহারে সমস্যা

আপনি যদি নির্বাচিত আইটেমগুলিকে WHERE ধারাতে রাখার অনুমতি দেন তবে আপনি কেবল অনুসন্ধানের জটিলতাটিই বিস্ফোরিত করতে পারবেন না (এবং এইভাবে একটি ভাল কার্যকর প্রয়োগের সন্ধানের জটিলতা) সম্পূর্ণ অযৌক্তিক স্টাফ নিয়ে আসা সম্ভব। চেষ্টা করুন:

SELECT X + 5 Y FROM MyTable WHERE Y = X

যদি MyTable এর মধ্যে ইতিমধ্যে একটি কলাম Y রয়েছে, তবে কোনটি যেখানে ক্লজটি উল্লেখ করেছে? সমাধানটি হ'ল সিটিই বা একটি উত্পন্ন টেবিল ব্যবহার করা, যা বেশিরভাগ ক্ষেত্রে অতিরিক্ত ব্যয় করা উচিত নয় তবে একই চূড়ান্ত শেষ ফলাফলটি অর্জন করে। সিটিই এবং উত্পন্ন সারণীগুলি একবারে কোনও নামমাত্র একবার ব্যবহার করার অনুমতি দিয়ে কমপক্ষে অস্পষ্টতার সমাধান কার্যকর করে।

এছাড়াও, এফআরওএম ক্লজে এলিয়াস ব্যবহার না করা বিশিষ্ট ধারণা তৈরি করে। আপনি এটি করতে পারবেন না:

SELECT
   T3.ID + (SELECT Min(Interval) FROM Intervals WHERE IntName = 'T') CalcID
FROM
   Table1 T
   INNER JOIN Table2 T2
      ON T2.ID = CalcID
   INNER JOIN Table3 T3
      ON T2.ID = T3.ID

এটা একটা বৃত্তাকার রেফারেন্স (অর্থে যে T2 গোপনে T3 থেকে একটি মান উল্লেখ করা হয়, আগে যে টেবিল JOIN তালিকায় উপস্থাপন করা হয়েছে), এবং এর অভিশাপ হার্ড দেখতে। এটা কেমন:

INSERT dbo.FinalTransaction
SELECT
   newid() FinalTransactionGUID,
   'GUID is: ' + Convert(varchar(50), FinalTransactionGUID) TextGUID,
   T.*
FROM
   dbo.MyTable T

আপনি কতটা বাজি রাখতে চান যে newid () ফাংশন দুটি একবার কার্যকর করার পরিকল্পনায় ফেলেছে, পুরোপুরি অপ্রত্যাশিতভাবে দুটি কলামকে পৃথক মান দেখায়? যখন উপরের ক্যোয়ারিটি সিটিই বা উত্পন্ন টেবিলগুলির গভীরে এন স্তরগুলি ব্যবহৃত হয় তখন কী হয়। আমি গ্যারান্টি দিচ্ছি যে সমস্যাটি আপনি কল্পনার চেয়েও খারাপ। আছে ইতিমধ্যে যখন শুধুমাত্র একবার বা একটি ক্যোয়ারী পরিকল্পনা কি সময়ে মূল্যায়ন করা হয় সম্পর্কে গুরুতর অসঙ্গতি সমস্যা, এবং মাইক্রোসফট বলেছে ঠিক হবে নাতাদের মধ্যে কিছু কারণ তারা সঠিকভাবে ক্যোয়ারী বীজগণিত প্রকাশ করছে - যদি কোনও অপ্রত্যাশিত ফলাফল পায়, তবে ক্যোয়ারিকে কিছু অংশে বিভক্ত করুন। সম্ভাব্যভাবে দীর্ঘ দীর্ঘ এই শৃঙ্খলগুলির মাধ্যমে বিজ্ঞপ্তিযুক্ত রেফারেন্সগুলি শিকলযুক্ত রেফারেন্সগুলি সনাক্ত করা – এগুলি বেশ জটিল সমস্যা। সমান্তরালতার পরিচয় দিন এবং আপনি তৈরিতে একটি দুঃস্বপ্ন পেয়েছেন।

দ্রষ্টব্য: WHERE বা GROUP BY- র মধ্যে উপনামটি ব্যবহার করা newid () বা র‌্যান্ড () এর মতো ফাংশনগুলির সাথে সমস্যার ক্ষেত্রে কোনও পার্থক্য আনছে না।

পুনরায় ব্যবহারযোগ্য এক্সপ্রেশন তৈরি করার একটি এসকিউএল সার্ভার উপায় way

ক্রস অ্যাপ্লাই / আউটর এপ্লিকেশন এসকিউএল সার্ভারের এমন একটি উপায় যা এক্সপ্রেশন তৈরি করতে পারে যা কোয়েরিতে অন্য কোথাও ব্যবহার করা যেতে পারে (কেবলমাত্র এফ্রোম ক্লজের আগে নয়):

SELECT
   X.CalcID
FROM
   Table1 T
   INNER JOIN Table3 T3
      ON T.ID = T3.ID
   CROSS APPLY (
      SELECT
         T3.ID + (SELECT Min(Interval) FROM Intervals WHERE IntName = 'T') CalcID
   ) X
   INNER JOIN Table2 T2
      ON T2.ID = X.CalcID

এটি দুটি কাজ করে:

  1. ক্রস অ্যাপ্লিকেশনটিতে সমস্ত অভিব্যক্তি তৈরি করে একটি "নেমস্পেস" (একটি টেবিল ওরফে, এখানে, এক্স) পান এবং সেই নামের জায়গার মধ্যে অনন্য হয়ে উঠুন।
  2. এটি কোথাও এটিকে স্পষ্ট করে তোলে যে কেবল ক্যালসিডিডি এক্স থেকে আসছে না, তবে এটি স্পষ্ট করে তোলে যে আপনি টেবিলে টি 1 এবং টি 3 তে যোগদান করার সময় কেন এক্স থেকে কিছু ব্যবহার করতে পারবেন না, কারণ এক্স এখনও পরিচয় করা হয়নি।

আমি আসলে ক্রস অ্যাপ্লিকেশনটির বেশ অনুরাগী। এটি আমার বিশ্বস্ত বন্ধু হয়ে গেছে এবং আমি এটি সর্বদা ব্যবহার করি। আংশিক UNPIVOT দরকার (যার জন্য নেটিভ সিনট্যাক্স ব্যবহার করে একটি PIVOT / UNPIVOT বা UNPIVOT / PIVOT দরকার হবে)? ক্রস প্রয়োগের কাজ শেষ হয়েছে। একটি গণনার মান দরকার যা বহুবার পুনরায় ব্যবহৃত হবে? সম্পন্ন. কোনও লিঙ্কযুক্ত সার্ভারে কলগুলির জন্য কঠোরভাবে কার্যকর করার আদেশটি প্রয়োগ করা দরকার? গতিতে চিৎকারের উন্নতি সম্পন্ন। কেবলমাত্র এক ধরণের সারিটি 2 টি সারিতে বিভক্ত হওয়া বা অতিরিক্ত শর্তযুক্ত? সম্পন্ন.

সুতরাং খুব কমপক্ষে, ডিবিএমএস এসকিউএল সার্ভার ২০০৫ এবং তারপরে আপনার কাছে অভিযোগের আর কোনও কারণ নেই: ক্রস আবেদন করুন আপনি যেভাবে চান সেভাবেই আপনি কীভাবে ড্রাইভ করেন।


14

আমি আপনাকে সঠিক কারণগুলি বলতে পারব না, তবে আমি আপনাকে বলব যে পুনরাবৃত্তি প্রকাশের কার্যক্রম রয়েছে, উদাহরণস্বরূপ, পুনরাবৃত্তি এড়ানোর জন্য সিটিই, সাবকিউরিস, উত্সযুক্ত টেবিল ইত্যাদি ব্যবহার করা।

যদি আপনি একটি পুনরাবৃত্তি প্রকাশের সাথে কোনও কোয়েরি দেখান, আমরা সম্ভবত আপনাকে কীভাবে এটি পুনরায় লিখতে হবে তা আপনাকে প্রদর্শন করতে পারি যাতে এক্সপ্রেশনটি কেবল একবার তালিকাভুক্ত হয়। তবে এটি কেবল ক্যোয়ারী লেখার / পড়ার ক্ষেত্রে জটিলতা হ্রাস করে, দক্ষতা সম্পর্কে এটি খুব বেশি পরিবর্তনের সম্ভাবনা নেই। এসকিউএল সার্ভার সাধারণত স্বীকৃতি জানায় যে এক্সপ্রেশনগুলি পুনরাবৃত্তি হয় এবং এটি দু'বার কাজ সম্পাদন করে না pretty কিছু ব্যতিক্রম রয়েছে যা অন্যদিকে যায়, তবে আপনি যখন কেবল এই ঘটনাটি পর্যবেক্ষণ করেন কেবল তখনই দক্ষতার বিষয়ে আপনাকে উদ্বিগ্ন হওয়া উচিত। আমি সন্দেহ করি আপনার দ্বারা লিখিত বেশিরভাগ পুনরাবৃত্তি প্রকাশগুলি পরিকল্পনার কেবলমাত্র একটি ক্রিয়াকলাপের মধ্যে পড়েছে।

এগুলি সমস্তই বলেছিল, আমি এই প্রশ্ন থেকে আমার উত্তরটির কিছু অংশ পুনরাবৃত্তি করব:

/dba/19762/why-is-the-select-clause-listed-first


মানদণ্ড অনুসারে কীভাবে একটি ক্যোয়ারী প্রক্রিয়া করা হয় সে সম্পর্কে জো সেল্কোর ব্যাখ্যা এখানে রয়েছে (আমি এটি আমার নিজের এসফাক ডটকম নিবন্ধ থেকে চুরি করেছি , যা সম্ভবত সেলকোর একটি নিউজগ্রুপ পোস্ট থেকে উদ্ধৃতিটি চুরি করেছে):

এসকিউএল-তে অন্তত তত্ত্বের ক্ষেত্রে কীভাবে একটি নির্বাচন কাজ করে তা এখানে। রিয়েল পণ্যগুলি যখন পারেন তারা জিনিসগুলি অনুকূল করে তুলবে।

এফআরওএম ক্লজটি থেকে শুরু করুন এবং সেখানে যোগদান করুন, ইউনিয়নগুলি, চৌরাস্তাগুলি এবং অন্য যে কোনও টেবিল নির্মাতা রয়েছে তার থেকে একটি ওয়ার্কিং টেবিল তৈরি করুন। এএস বিকল্পটি আপনাকে এই কার্যকরী সারণিতে একটি নাম দেওয়ার অনুমতি দেয় যা আপনাকে এরপরে থাকা অবশিষ্ট কোয়েরিটির জন্য ব্যবহার করতে হবে।

যেখানে ক্লাউজে যান এবং মানগুলি পাস না করে এমন সারিগুলি সরান; এটি সত্য যা পরীক্ষা করে না (অজানা এবং মিথ্যা প্রত্যাখ্যান করে)। WHROE ধারাটি FROM ধারাটিতে কাজ করার জন্য প্রয়োগ করা হয়।

বিভাগের মাধ্যমে Gচ্ছিক গ্রুপে যান, গোষ্ঠী তৈরি করুন এবং প্রতিটি গ্রুপকে একক সারিতে হ্রাস করুন, নতুন ওয়ার্কিং টেবিলের সাথে আসল ওয়ার্কিং টেবিলটি প্রতিস্থাপন করুন। গোষ্ঠীযুক্ত টেবিলের সারিগুলি অবশ্যই গ্রুপ বৈশিষ্ট্যযুক্ত: (1) একটি গ্রুপিং কলাম (2) গ্রুপ সম্পর্কে একটি পরিসংখ্যান (অর্থাত্ সামগ্রিক ফাংশন) (3) একটি ফাংশন বা (4) এই তিনটি আইটেম নিয়ে গঠিত একটি অভিব্যক্তি।

Alচ্ছিক HAVING ধারাটিতে যান এবং এটি দলবদ্ধ ওয়ার্কিং টেবিলের বিপরীতে প্রয়োগ করুন; যদি কোনও অনুচ্ছেদে গ্রুপ না থাকে তবে পুরো টেবিলটিকে একটি গোষ্ঠী হিসাবে বিবেচনা করুন।

নির্বাচন বিভাগে যান এবং তালিকাতে প্রকাশ করুন। এর অর্থ হ'ল স্কেলার সাবকিউরিজ, ফাংশন কল এবং এক্সপ্লোরেশনগুলি SELECT এ সমস্ত অন্যান্য ক্লজগুলি সম্পন্ন করার পরে সম্পন্ন হয়। এএস অপারেটরও SELECT তালিকায় প্রকাশের জন্য একটি নাম দিতে পারে। এই নতুন নামগুলি একসাথে অস্তিত্বে আসে, তবে WHERE ধারাটি কার্যকর করার পরে; আপনি সেগুলিকে নির্বাচনের তালিকায় বা যে কারণে যেখানে ক্লুয়েজ ব্যবহার করতে পারবেন না।

নেস্টেড ক্যোয়ারী এক্সপ্রেশনগুলি সি, প্যাসকেল, অ্যালগল ইত্যাদি ব্লকের কাঠামোগত ভাষার থেকে প্রত্যাশা করা স্বাভাবিক স্কোপিংয়ের নিয়ম অনুসরণ করে Name যথা, অন্তঃতমতম কোয়েরিতে কোয়েরমগুলি রয়েছে সেগুলির মধ্যে কলামগুলি এবং সারণিগুলি উল্লেখ করতে পারে।

এর অর্থ হ'ল একটি নির্বাচনের দ্বারা গ্রুপের চেয়ে বেশি কলাম থাকতে পারে না; তবে এতে অবশ্যই কম কলাম থাকতে পারে।

এখন, সেলকো স্ট্যান্ডার্ডগুলির পূর্ববর্তী সংস্করণগুলির অন্যতম প্রধান অবদানকারী ছিল। WHY?জল্পনা-কল্পনা বাদে আপনি কখনই প্রশ্নের নির্দিষ্ট উত্তর পেতে যাচ্ছেন কিনা তা আমি জানি না । আমার অনুমান যে আসল অপারেশনটিকে প্রথমে তালিকাবদ্ধ করা পার্সারের পক্ষে ঠিক কী অপারেশন হতে চলেছে তা জানতে খুব সহজ করে তোলে know একটি 20-টেবিলের জোড়ের কল্পনা করুন যা একটি SELECTবা UPDATEবা হয়ে উঠতে পারে DELETEএবং মনে রাখবেন যে এই ইঞ্জিনগুলির কোডটি মূলত সেই দিনগুলিতে লেখা হয়েছিল যখন স্ট্রিং পার্সিং বেশ ব্যয়বহুল ছিল।

মনে রাখবেন যে এসকিউএল স্ট্যান্ডার্ডটি FROMপ্রথমে আসার নির্দেশ দিলে বিক্রেতারা স্বতন্ত্রভাবে ব্যাকরণকে আলাদাভাবে আলাদাভাবে বিভক্ত করার সিদ্ধান্ত নিয়েছিলেন, সুতরাং এটি সম্পূর্ণরূপে 100% প্রক্রিয়াকরণের আদেশকে মেনে চলার জন্য লিখিতভাবে ধারাগুলির ক্রমটি আশা করা বুদ্ধিমান হতে পারে না সময়.

একই জিনিস যেমন জিনিস জন্য সত্য CASE। উদাহরণস্বরূপ, আমরা এখানে ঠিক এই সাইটে দৃশ্যাবলী দেখেছি , যেখানে পূর্বে বিশ্বাস করা মিথ যে CASEসবসময় ক্রম এবং শর্ট সার্কিটে প্রক্রিয়াজাত হয় তা মিথ্যা। এবং এটি অন্যান্য সাধারণ বিশ্বাসগুলিতেও প্রসারিত, যেমন এসকিউএল সার্ভার তাদের লিখিত ক্রমে মূল্যায়ন করে, বাম থেকে ডানে শর্ট সার্কিট WHEREক্লজগুলি বা একাধিকবার রেফারেন্স করা সত্ত্বেও একবার বা নির্দিষ্ট ক্রমে সিটিই প্রক্রিয়াকরণ করে। আপনি কোয়েরিটি কীভাবে ঘোষণাযোগ্যভাবে কাজ করা উচিত তা ঠিক কীভাবে প্রতিফলিত হয় না এমনভাবে পণ্যগুলি কীভাবে ফিট থাকে সেগুলি অপ্টিমাইজ করতে পারে।


2
এছাড়াও লক্ষ্য করুন যে ক্যোয়ারির বিভিন্ন অংশে উপকরণ ব্যবহার বা না করার ক্ষমতা পার্সার দ্বারা প্রয়োগ করা হয়, অপটিমাইজার বা এক্সিকিউশন ইঞ্জিন দ্বারা নয়। ইঞ্জিনটি কীভাবে আসলে ক্যোয়ারি কার্যকর করে তা প্রয়োজনীয়ভাবে সিনট্যাক্সকে প্রভাবিত করে এমন প্রতিবন্ধকতাগুলি প্রতিফলিত করে না।
অ্যারন বারট্র্যান্ড

2

ইন সত্তা এসকিউএল , আপনি কিছু পরিস্থিতিতে ক্যোয়ারীতে অন্যান্য স্থানে এক্সপ্রেশন থেকে alias লেখা ব্যবহার করতে পারেন:

select k1, count(t.a), sum(t.a)
from T as t
group by t.b + t.c as k1

নোট করুন যে এখানে আপনি GROUP BYঅনুচ্ছেদে এটি অনুচ্ছেদে ক্লজটিতে ব্যবহারের জন্য সংজ্ঞায়িত করতে হবে SELECT

এসকিউএল কোয়েরিতে এ জাতীয় কিছু উপকরণ-পুনঃব্যবহারযোগ্য-এক্সপ্রেশনটিকে স্পষ্টতই অনুমতি দেওয়া সম্ভব

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.