একটি এসকিউএল কোয়েরির মধ্যে কীভাবে দুটি ক্ষেত্র সুম করবেন


88

আমাকে একই সারির মধ্যে থাকা মোট দুটি ক্ষেত্র এবং একই সারির শেষে একটি ক্ষেত্রের মধ্যে নম্বরটি ইনপুট করতে হবে।

এটি আমার কোড।

Sum(tbl1.fld1 + tbl1.fld2) AS [Total]

এসইউএম ফাংশনটি কি এটির জন্য ব্যবহৃত হয়, বা আপনি কেবল একটি কলামের মোট প্রাপ্তির জন্য এসইএম ফাংশনটি ব্যবহার করতে পারেন?

ধন্যবাদ

উত্তর:


212

SUMএকটি সামগ্রিক ফাংশন। এটি প্রতিটি গ্রুপের জন্য মোট গণনা করবে। +একটি সারিতে দুটি বা আরও বেশি কলাম গণনা করার জন্য ব্যবহৃত হয়।

এই উদাহরণটি বিবেচনা করুন,

ID  VALUE1  VALUE2
===================
1   1       2
1   2       2
2   3       4
2   4       5

 

SELECT  ID, SUM(VALUE1), SUM(VALUE2)
FROM    tableName
GROUP   BY ID

ফলাফল হবে

ID, SUM(VALUE1), SUM(VALUE2)
1   3           4
2   7           9

 

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

ফলাফল হবে

ID, VALUE1 + VALUE2
1   3
1   4
2   7
2   9

 

SELECT  ID, SUM(VALUE1 + VALUE2)
FROM    tableName
GROUP   BY ID

ফলাফল হবে

ID, SUM(VALUE1 + VALUE2)
1   7
2   16

11
এই উত্তরটি জটিল নয় তবে প্রয়োজনীয় এবং প্রয়োজনীয় হিসাবে বিশদ। ভাল একটা!
বিটারব্লিউ

4
কুডোস জন, সম্ভবত এই প্রশ্নের উত্তর দেওয়ার সর্বোত্তম উপায়!
অভিজিৎ


7

একাধিক সারিগুলির জন্য একটি কলামে মান যোগ করতে SUM ব্যবহৃত হয়। আপনি কেবল একসাথে আপনার কলামগুলি যুক্ত করতে পারেন:

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]

7
ID  VALUE1  VALUE2
===================
1   1       2

1   2       2
2   3       4
2   4       5

select ID, (coalesce(VALUE1 ,0) + coalesce(VALUE2 ,0) as Total from TableName

5

আমার খ্যাতি পয়েন্টগুলি 50 এর চেয়ে কম হওয়ার কারণে আমি উপরোক্ত ই কোডারের উত্তর সম্পর্কে মন্তব্য করতে বা ভোট দিতে পারিনি। এটি করার সর্বোত্তম উপায় এটি যাতে আপনার গ্রুপটি ব্যবহার করতে হবে না কারণ আমার অনুরূপ সমস্যা ছিল।
এমনটি করে SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))মোট হিসাবে এই যদি আপনি নম্বরটি যদি আপনি চান পাবেন কিন্তু করণ না একটি গ্রুপ দ্বারা কোন ত্রুটির আপনি পরিত্রাণ। এটি আমার জিজ্ঞাসা ছিল এবং আমাকে প্রতিটি ব্যবসায়ীর জন্য মোট গণনা এবং মোট পরিমাণ দিয়েছিল এবং তারপরে আমাকে গুণমান এবং ঝুঁকিপূর্ণ ডিলার loansণের জন্য একটি উপ-মোট দিয়েছে।

SELECT 
    DISTINCT STEP1.DEALER_NBR
    ,COUNT(*) AS DLR_TOT_CNT
    ,SUM((COALESCE(DLR_QLTY,0))+(COALESCE(DLR_RISKY,0))) AS DLR_TOT_AMT
    ,COUNT(STEP1.DLR_QLTY) AS DLR_QLTY_CNT
    ,SUM(STEP1.DLR_QLTY) AS DLR_QLTY_AMT
    ,COUNT(STEP1.DLR_RISKY) AS DLR_RISKY_CNT
    ,SUM(STEP1.DLR_RISKY) AS DLR_RISKY_AMT
    FROM STEP1
    WHERE DLR_QLTY IS NOT NULL OR DLR_RISKY IS NOT NULL
        GROUP BY STEP1.DEALER_NBR

4

যোগফলটি কেবল একটি কলামের মোট পরিমাণ পায় gets বিভিন্ন কলাম থেকে দুটি মান যোগ করতে, মানগুলিকে ইন্টিতে রূপান্তর করুন এবং + -Oprator ব্যবহার করে এগুলি যুক্ত করুন

Select (convert(int, col1)+convert(int, col2)) as summed from tbl1

আশা করি এইটি কাজ করবে.


4

কলাম যুক্ত করার জন্য কেবল একটি অনুস্মারক। মানগুলির মধ্যে একটি যদি নুল হয় তবে those কলামগুলির মোট শূন্য হয়। সুতরাং কেন কিছু পোস্টার দ্বিতীয় প্যারামিটার 0 হওয়ার সাথে একত্রিত হওয়ার প্রস্তাব দিয়েছে

আমি জানি এটি একটি পুরানো পোস্টিং ছিল তবে এটি সম্পূর্ণতার জন্য এটি যুক্ত করতে চেয়েছিল।


ধন্যবাদ বার্ব, কোলেসেসের পাশে একজনও ইসনুল ব্যবহার করতে পারে। উদাহরণস্বরূপ, ইসনুল ((মান_1), 0) + ইসনুল ((মান 3), 0)
হরবাজে

3

আপনি যদি দুটি কলাম একসাথে যুক্ত করতে চান তবে আপনাকে যা করতে হবে তা হ'ল এগুলি যুক্ত করা। তারপরে আপনি কোয়েরিতে ফিরে আসা প্রতিটি সারির জন্য সেই দুটি কলামের যোগফল পাবেন।

আপনার কোডটি যা করছে তা হ'ল দুটি কলাম একসাথে যুক্ত করা এবং তার পরে যোগফলের যোগফল। এটি কার্যকর হবে, তবে আপনি যা অর্জন করার চেষ্টা করছেন তা এটি নাও হতে পারে।

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