CÔNG TY CỔ PHẦN BLUESOFTS

Hướng dẫn hàm GROUP_CONCAT với BS_SQL để liệt kê mã liên quan đến đối tượng gộp nhóm, thống kê


Hàm GROUP_CONCAT cho phép tạo báo cáo liệt kê các mã theo từng đối tượng được nhóm. Đây là hàm giúp bạn làm báo cáo hay có độ phức tạp nhưng lại dễ dàng với A-Tools. Hàm này được lồng trong hàm BS_SQL sau từ khóa SELECT.

Với danh sách tổng hợp các mặt hàng theo từng tháng
Bạn có muốn liệt kê các khách hàng mua sản phẩm đó?
Các ngày bạn đã bán ?
Để làm được như các yêu cầu trên công thức như sau:
 
SQL: "SELECT RECNO() AS STT, MONTH(NGAY_CT) AS [THÁNG], MA_VLSPHH, SUM(SLG) AS [TỔNG SLG], 
                '?' AS [DANH SÁCH KH], 
                '?' AS [CÁC NGÀY] 
FROM DATA 
WHERE MA_KH<>'' 
GROUP BY MONTH(NGAY_CT),MA_VLSPHH"
 
 
OPTIONS: INSERT=YES; GROUP(1)
 
CÔNG THỨC: =BS_SQL(A4,A5)
 
z6802211247692_7d5aacb20d967b17ee8d97df6e7a14ea.jpg

Cách dùng hàm GROUP_CONCAT
Kết hợp với SEPARATOR để chỉ định ký tự ngăn cách danh sách. Công thức như sau:
 
SQL:"SELECT RECNO() AS STT, MONTH(NGAY_CT) AS [THÁNG], MA_VLSPHH, SUM(SLG) AS [TỔNG SLG], 
              GROUP_CONCAT(MA_KH SEPARATOR '+') AS [DANH SÁCH KH], 
              GROUP_CONCAT(DAY(NGAY_CT)  SEPARATOR '+') AS [CÁC NGÀY] 
FROM DATA 
WHERE MA_KH<>'' 
GROUP BY MONTH(NGAY_CT),MA_VLSPHH"
 
OPTIONS: INSERT=YES; GROUP(1)
 
CÔNG THỨC: =BS_SQL(A4,A5)

z6802256202129_0b4364050e2db0cc10d8ea175f6bd8e6.jpg

Cách dùng hàm GROUP_CONCAT
Kết hợp với SEPARATOR để chỉ định ký tự ngăn cách danh sách
Kết hợp với ORDER BY để sắp xếp các giá trị liệt kê tăng hoặc giảm dần
Ngầm định là tăng dần
Nếu muốn giảm dần thì:
GROUP_CONCAT(ma_kh order by ma_kh desc)
Chú ý cột "DANH SÁCH KH" giá trị sắp xếp Z->A. Công thức như nhau:
 
SQL: "SELECT RECNO() AS STT, MONTH(NGAY_CT) AS [THÁNG], MA_VLSPHH, SUM(SLG) AS [TỔNG SLG], 
              GROUP_CONCAT(MA_KH SEPARATOR '+' ORDER BY MA_KH DESC) AS [DANH SÁCH KH], 
              GROUP_CONCAT(DAY(NGAY_CT)  SEPARATOR '+') AS [CÁC NGÀY] 
FROM DATA 
WHERE MA_KH<>'' 
GROUP BY MONTH(NGAY_CT),MA_VLSPHH"
 
 
OPTIONS: INSERT=YES; GROUP(1)
 
CÔNG THỨC: =BS_SQL(A4,A5)

z6802292561358_b69669f12ce9f62ab1f3db983111a580.jpg
 
 Cách dùng hàm GROUP_CONCAT
Kết hợp với SEPARATOR để chỉ định ký tự ngăn cách danh sách
Tạo ngắt dòng trong danh sách cở cột "CÁC NGÀY"
"Cách làm: 
1. SEPARATOR '
'
2. Format cột ""CÁC NGÀY"" là ""Wrap Text"""
Có thể ghép các cột để liệt kê
DAY(ngay_ct) & ':' & slg
Bạn để ý cột "CÁC NGÀY" vừa có số ngày và số lượng hàng
 
SQL: "SELECT RECNO() AS STT, MONTH(NGAY_CT) AS [THÁNG], MA_VLSPHH, SUM(SLG) AS [TỔNG SLG], 
               GROUP_CONCAT(MA_KH SEPARATOR '+') AS [DANH SÁCH KH], 
               GROUP_CONCAT(DAY(NGAY_CT) &':' & SLG  SEPARATOR '
') AS [CÁC NGÀY] 
FROM DATA 
WHERE MA_KH<>'' 
GROUP BY MONTH(NGAY_CT),MA_VLSPHH"
 
OPTIONS: INSERT=YES; GROUP(1)
 
CÔNG THỨC: =BS_SQL(A4,A5)

Video hướng dẫn chi tiết:
 

Download file Excel nguồn trong bộ cài Add-in A-Tools
Download Add-in A-Tools để thực hành