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 ![]()



















