-
Query tìm giá
lmthu > 21-10-15, 09:04 AM
Chào các bạn!
Mình đang gặp khó nhờ các bạn giúp dùm:
Mình có 2 table sau:
1. Table PhieuNL
Sophieu Ngaylap MaNL Soluong
PNL001 20/08/2015 DO05 40
PNL002 21/08/2015 DO05 40
PNL003 07/09/2015 XA92 50
PNL004 10/09/2015 DO05 40
2. Table GiaNL
Ngaygia MaNL Giatien
19/08/2015 DO05 13200
03/09/2015 DO05 13420
03/09/2015 XA92 18500
Mình tạo 1 Query để lấy giá bán của từng loại nhiên liệu dựa theo ngày ý tưởng như sau:
- Dò tìm theo từng mã nhiên liệu (MaNL) của Table PhieuNL tham chiếu vào Table GiaNL theo ngày lập phiếu nếu tìm thấy sẽ lấy giá bán, nếu không thì sẽ lấy giá bán của ngày gần nhất của MaNL đó
Mình đánh lệnh sau:
Gia:IIf(Isnull(Dlookup("GiaNL!Giatien";"GiaNL";"GiaNL!MaNL='" & PhieuNL!MaNL & "' And Ngaygia=#" & PhieuNL!Ngaylap & "#"));Dlookup("GiaNL!Giatien";"GiaNL";"GiaNL!MaNL='" & PhieuNL!MaNL & "' And Ngaygia<#" & PhieuNL!Ngaylap & "#");0)
Nhưng kết quả trả về lại không đúng
Bạn nào biết giúp mình với
Trân trọng cám ơn nhiều! -
RE: Query tìm giá
thucgia > 21-10-15, 12:12 PM
Theo ý mình, đơn giản nhất là bạn nên lọc ra một query "Bảng giá mới nhất" dựa vào hàm max(ngay).
Query của bạn đây :
Mã:SELECT
gm.hang_id,
gm.ngay_moi_nhat,
tpl.gia as gia_moi
FROM
(
SELECT Max(gia.ngay) AS ngay_moi_nhat, gia.hang_id, hang_id & Day(ngay_moi_nhat) & Month(ngay_moi_nhat) & Year(ngay_moi_nhat) AS ma
FROM gia
GROUP BY gia.hang_id
)
as gm
LEFT JOIN
(
SELECT gia.gia, hang_id & day(ngay) & month(ngay) & year(ngay) AS ma
FROM gia
)
as tpl
ON gm.ma = tpl.ma
kết quả đây :
Mã:hang_id ngay_moi_nhat gia_moi
a 20/10/15 1.5
b 21/10/15 2.5
c 19/10/15 3