Lọc dữ liệu bằng SQL theo điều kiện

Liên hệ QC

Giahao2006

Thành viên mới
Tham gia
31/7/20
Bài viết
31
Được thích
14
Giới tính
Nam
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 ạ.

1663590497514.png
 

File đính kèm

  • LOC DATA BANG SQL.xlsx
    13.9 KB · Đọc: 16
Cứ phải là SQL mới được à
 
Upvote 0
Cứ phải là SQL mới được à
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.
 
Upvote 0
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.
Thế không biết mới hỏi mà.Mà có đòi hỏi nhiều gì đâu anh.Chỉ là làm bằng SQL thôi à.
 
Upvote 0
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.
 
Upvote 0
Tóm lại là Select còn cái dòng trống đó thì tự chèn bằng tay nhé
 
Upvote 0
Thế không biết mới hỏi mà.Mà có đòi hỏi nhiều gì đâu anh.Chỉ là làm bằng SQL thôi à.
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.
 
Upvote 0
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.
 
Upvote 0
Tôi vừa sửa chữ ký của nick snow25 cho nhỏ lại, phù hợp với nội quy.
1663601797253.png
 
Upvote 0
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 ạ.

View attachment 281121
Thêm sheet DanhMuc như sau:

1663637836099.png

Rồi chạy thử code sau nhé:

Mã:
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
 

File đính kèm

  • LOC DATA BANG SQL.xlsb
    21.4 KB · Đọc: 26
Upvote 0
Sỡ dĩ tôi nói thớt trình độ còn quá tay mơ, nói chuyện "học hỏi" chỉ là nói dóc là vì cái bài tập nảy là điển hình của người DỐT VỀ DỮ LIỆU.

Trứng đong đo bằng Kg?

Tính tổng (Total/Subtotal) số cân của nhiều mặt hàng khác nhau thì con số ấy có nghĩa lý gì? Có khác nào so sánh tôi bán anh A 5 con (heo) và anh B cũng 5 con (gà)
 
Upvote 0
Thêm sheet DanhMuc như sau:

View attachment 281126

Rồi chạy thử code sau nhé:

Mã:
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
Dạ, cảm ơn Anh Hai Lúa Miền Tây nhiều ạ
 
Upvote 0
Dạ, Anh Hai Lúa Miền Tây ơi, có thể chỉnh lại giúp em tí cho thích hợp với file bên dưới được không ạ, cảm ơn Anh nhiều ạ
(Vừa lọc theo DVM và DVB nhé Anh)
1663758308873.png
 

File đính kèm

  • LOC DATA BANG SQL.xlsb
    40.7 KB · Đọc: 5
Upvote 0
Chủ thớt nhờ xong mà được còn nhờ tiếp cái gì nữa không? Thấy lắt nhắt dữ. Đã hỏi dùng SQL thì tốt nhất là dữ liệu SQL SV chứ không nên dùng Excel làm CSDL nữa.
 
Upvote 0
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
 

File đính kèm

  • LOC Khach Hang BANG SQL .xlsm
    22.9 KB · Đọc: 18
Upvote 0
Chủ thớt nhờ xong mà được còn nhờ tiếp cái gì nữa không? Thấy lắt nhắt dữ. Đã hỏi dùng SQL thì tốt nhất là dữ liệu SQL SV chứ không nên dùng Excel làm CSDL nữa.
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é)

Trong khi chờ giải pháp của Hai Lúa Miền Tây,
...
Nên chờ "Code đơn giản" của thớt. Có lẽ sắp ra rồi.
 
Upvote 0

File đính kèm

  • 1663830174616.png
    1663830174616.png
    358.2 KB · Đọc: 42
  • 1663830336728.png
    1663830336728.png
    252.9 KB · Đọc: 40
Lần chỉnh sửa cuối:
Upvote 0
Anh chị cho em hỏi, em nhập hàm SQL có điều kiện nhưng nó không xuất ra được kết quả. Còn nếu em xuất không điều kiện thì nó lại hiện đầy đủ. Em phải sửa như nào ạ !!!! Hiccc
=bs_Sql("SELECT n.[Ngày nhập ], n.[TỒN ], n.[Đơn giá], n.ID_N
FROM n
WHERE n.[Mã hàng] = '" & M3 & "' AND n.[So luong] = " & N3 & "","HR=NO; INSERT=YES;")

1663830607704.png
 
Upvote 0
Thử thay:
WHERE n.[Mã hàng] = '" & M3 & "' AND n.[So luong] = " & N3 & "","HR=NO; INSERT=YES;")
bằng"
WHERE n.[Mã hàng] LIKE '" & M3 & "' AND n.[So luong] = " & N3 ,"HR=NO; INSERT=YES;")
không có file nên không test được.
 
Upvote 0
Web KT
Back
Top Bottom