ishwara.us Think Bigger about Business Intelligence

25May/110

Contoh Kasus Query T-SQL

Kasus:

Saya Memilik Table Master Barang bernama TableA sebagai Berikut

ID

Nama

Stock

A BLA BLA1 2
B BLA BLA2 0
C BLA BLA3 1
D BLA BLA 9

 

Kemudian saya juga memiliki Table Detail bernama TableB Sebagai Berikut:

ID

Qty

A 1
D 1
A 1
D 1
D 1

 

Hasil yang diharapkan adalah:

ID Nama Stock TotalQty Selisih
A BLA BLA1 2 2 0
B BLA BLA2 0 0 0
C BLA BLA3 1 0 1
D BLA BLA 9 3 6

dimana rumus kolom selisih adalah:TableA.Stock - sum(TableB.Qty) Aggregate pada ID

saya mengajukan pertanyaan di milis sqlserver indonesia, dan memperoleh dua jenis solusi.

Solusi 1:

Saya mendapatkan solusi query ini dari Mas Ano

select    a.ID, a.Nama, a.Stock, TotalQty=coalesce(b.SumofQty,0),  Selisih=a.Stock-coalesce(b.SumofQty,0)

from    tabelA a

left        join (

            select    ID, SumofQty=sum(Qty)

            from    tabelB

            group    by ID

        ) b on a.ID=b.ID

 

Solusi 2:

saya dapatkan dari Kang Deni beliau memiliki blog di sini

SELECT A.ID, A.Nama, A.Stock, ISNULL(B.Qty, 0), A.Stock-ISNULL(B.Qty,0) AS Selisih 

FROM TableA AS A LEFT JOIN (SELECT ID, SUM(Qty) AS Qty FROM TableB GROUP BY ID) AS B ON A.ID=B.ID

Semoga Bermanfaat Smile

Tagged as: Leave a comment
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

No trackbacks yet.

Switch to our mobile site