Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

cần lấy dữ liệu được nhóm theo nhóm

Hãy thử sử dụng khái niệm sau:

Chèn dữ liệu:

CREATE TABLE some_table (some_data VARCHAR(20), some_other_data VARCHAR(20), groupId VARCHAR(20));
INSERT INTO some_table (some_data, some_other_data, groupId) values ('a', '1', 'id1');
INSERT INTO some_table (some_data, some_other_data, groupId) values ('b', '2', 'id1');
INSERT INTO some_table (some_data, some_other_data, groupId) values ('c', '3', 'id2');

Thực hiện truy vấn:

SELECT '{"' + t.groupId + '": [{' + STUFF(
          (
            SELECT '{ "some_data":"' + td.some_data + '"', ', "some_other_data":' + td.some_other_data + '},'
            FROM some_table td
            WHERE t.groupId = td.groupId
            FOR XML PATH(''), TYPE
          ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') + ']}'
FROM some_table t
GROUP BY t.groupId

Kết quả:

Lưu ý rằng dấu phẩy ở cuối không được ảnh hưởng đến tính hợp lệ của dữ liệu. Kinh nghiệm của tôi với SQL Server còn hạn chế, nhưng điều này sẽ giúp bạn bắt đầu theo hướng có thể hoạt động.

Fiddle:

http://sqlfiddle.com/#!6/66b19/35




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột không hợp lệ trong danh sách chọn vì nó không được chứa trong hàm tổng hợp hoặc mệnh đề GROUP BY

  2. Máy chủ SQL đã chặn quyền truy cập vào thủ tục 'sys.sp_OACreate' của thành phần 'Quy trình tự động hóa Ole'

  3. Sử dụng sp_help_schedule trong SQL Server

  4. Giới hạn đệ quy ở mức nhất định - Các hàng trùng lặp

  5. Cú pháp truy vấn cập nhật SQL với liên kết bên trong