Tôi đang chuyển một ứng dụng mà ban đầu tôi đã viết để chạy trên Apache bằng cách sử dụng PHP và cơ sở dữ liệu MySQL. Một trong các truy vấn đã sử dụng các hàm MySQL của Concat_WS
và Group_Concat
để nối đầu tiên một vài cột khác nhau thành một chuỗi và sau đó ghép tất cả các mục được nhóm lại với nhau theo mệnh đề Group_By
.Hoàn tất Group_Concat của MYSQL trong SQL Server
Như một ví dụ:
ID Name Candy
1 John M&Ms
1 John KitKat
Truy vấn:
Select Group_Concat(Concat_WS('-',Name, Candy) Separator '00--00') as UserCandy
From ExampleTable
Group By ID
Kết quả:
UserCandy
John-M&Ms00--00John-KitKat
Bây giờ, tôi đang cố gắng để đạt được kết quả tương tự trong SQL Server 2008 sử dụng PHP 5.4+.
Những gì tôi đã cố gắng:
SELECT Stuff(name + ';' + candy, 1, 0, '-----') AS UserCandy
FROM test
Vấn đề can be seen in the fiddle that I have setup.
Kết quả dự kiến sẽ là:
-----John;MMs-----John;KitKat
Cuối cùng, điều này trở nên khó khăn hơn khi tôi bổ sung thêm cột để trộn. Tôi muốn kết hợp các kết quả (như được hiển thị ở trên) trong đó ID giống nhau. Điều này hoạt động rất tốt với group_concat
vì nó sẽ tự động hợp nhất các hàng đã được nhóm lại với nhau.
@bluefeet Tôi đã nhìn thấy câu hỏi đó, nhưng tôi đang cố tránh sử dụng XML. Tôi thực sự muốn giữ nguyên định dạng mà tôi đã sử dụng trong phiên bản trước của ứng dụng. –
Có nhiều cách để lấy dữ liệu theo định dạng mà bạn muốn, nhưng trong máy chủ SQL, không có cách nào dễ dàng để nối dữ liệu từ nhiều hàng vào một hàng duy nhất. – Taryn
@ bluefeet Vậy làm thế nào tôi có thể thay đổi câu hỏi này để nó được trả lời và không bị đóng? Tôi đã thực hiện một số lượng lớn đọc ngày hôm nay về chủ đề và tôi vẫn chưa nhận được nó bản thân mình (rõ ràng là tôi đang ở đây bây giờ) –