Merhaba, SQL’de bir belgedeki malzemelerin toplam tutarının o belgedeki toplama oranına ihtiyaç olmuştu geçenlerde.

Şu şekilde çözdüm, buradan da paylaşayım:

DECLARE @TblSatis TABLE (BelgeNo VARCHAR(10), MalzemeNo VARCHAR(30), Tutar NUMERIC(18, 2));
INSERT INTO @TblSatis VALUES
('0000000001', 'M001', 20),
('0000000001', 'M002', 30),
('0000000001', 'M002', 30),
('0000000001', 'M003', 40),
('0000000002', 'M003', 40),
('0000000002', 'M004', 60),
('0000000003', 'M005', 50);
WITH ct
AS (SELECT BelgeNo,
MalzemeNo,
SUM(Tutar) AS Toplam FROM @TblSatis
GROUP BY BelgeNo,
MalzemeNo)
SELECT BelgeNo,
MalzemeNo,
Toplam,
Toplam / (SUM(Toplam) OVER (PARTITION BY BelgeNo)) * 100 AS ToplamOran
FROM ct;

https://dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=9653eee4764a2482bb146e2eb4a637fb

Selamlar.

T-Sql Group By & Sum Beraber Kullanımı | MsSal

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.