Lọc dữ liệu bằng SQL theo điều kiện
Xin Chào Anh/Chị/ Em ạ, mình có một file hoặc hình bên dưới, kính nhờ Anh/Chị làm giúp ra kết quả giúp như phía dưới với ạ, Dạ, cảm ơn Anh / Chị nhiều ạ.
2583
Bài này mà viết SQL thì sặc gạch luôn.
Thứ nhất, SQL không chuyên để subtotals, các phiên bản lớn (Oracle, T-SQL,…) phải dùng Rollup. Riêng Access thì phải dùng Union với dòng Sum, khá phức tạp.
Thứ hai, sắp xếp để cho "Tôm" đứng trước "Gà" cần tạo trường phụ.
Túm lại, thớt đòi hỏi hơi nhiều so với khả năng hiểu biết của mình.
Dạ, chứ mấy cái record hay là viết code cơ bản để ra được giống vậy thì mình làm được rồi ạ, tại mình thấy SQL truy suất dữ liệu nhanh, nên mới nhờ mọi người giúp đỡ, sẵn học hỏi thêm ạ,
Sort lại theo cột B, sau đó dùng chức năng Sub total có sẵn của excel. Không hàm, không công thức, không VBA, không SQL, …
Một cách khác cũng 4 không: Pivot table, khuyến mãi một không thứ năm là không cần sort.
Tóm lại là Select còn cái dòng trống đó thì tự chèn bằng tay nhé
Bạn không hiểu lời của tôi: "…nhiều so với hiểu biết của mình"
Nếu thớt tự viết được phần SQL truy xuất chi tiết, và phần SQL truy xuất theo nhóm (tên và danh mục). Tôi sẽ chỉ cho cách nhập chúng lại để ra kết quả.
Khong viết được hai phần đó thì đòi hỏi SQL chỉ là đua đòi.
Làm cách nào để sắp xếp "tôm" trước "gà" chỉ cần kỹ xảo nhỏ
Nói túm lại, những đòi hỏi của bài không phải là căn bản SQL. Thớt bảo rằng "mình thấy SQL truy suất dữ liệu nhanh" là nói về cái mà chính mình hoàn toàn mù tịt.
Thực ra em biết anh nói cái gì.Chắc chủ thớt chỉ muốn là code nó chạy nhanh hơn thôi.Chứ không biết về SQL.Còn nếu bài của chủ thớt cho vào mảng duyệt nó cũng nhanh thôi.Chắc chỉ thua kém về % giây tốc độ.Nên có thể bỏ qua.
Thêm sheet DanhMuc như sau:
281126
Rồi chạy thử code sau nhé:
Sub GomNhom_HLMT()
Dim strSQL As String, strSQL1 As String
strSQL = "Select b.ThuTu,a.DVB,[DANH MUC],DVT,[SL] From [Sheet2$] a Inner Join [DanhMuc$] b On a.DVB=b.DVB "
strSQL1 = strSQL & " UNION ALL SELECT THUTU & ' Total','','','',SUM([SL]) AS SOLUONG FROM (" & strSQL & ") GROUP BY THUTU"
With CreateObject("ADODB.Recordset")
.Open ("SELECT DVB, [DANH MUC],DVT,[SL] FROM(" & strSQL1 & ") ORDER BY THUTU, [DANH MUC] DESC"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0 Xml;"
Sheet2.Range("L2").CopyFromRecordset .DataSource
End With
End Sub
www.giaiphapexcel.com/diendan/threads/l%E1%BB%8Dc-d%E1%BB%AF-li%E1%BB%87u-b%E1%BA%B1ng-sql-theo-%C4%91i%E1%BB%81u-ki%E1%BB%87n.162093/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Trong khi chờ giải pháp của Hai Lúa Miền Tây,
Xài tạm cái này,
Click chọn DVM trong cell J4
Bạn làm sao theo kịp đầu óc đi trước thời đại 100 năm.
(đừng hỏi tôi 100 năm sau có còn ai nhớ đến Excel và VBA không nhé)
Thử thay:
WHERE n.[Mã hàng] = '" & M3 & "' AND n. = " & N3 & "","HR=NO; INSERT=YES;")
bằng"
WHERE n.[Mã hàng] LIKE '" & M3 & "' AND n. = " & N3 ,"HR=NO; INSERT=YES;")
không có file nên không test được.