• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Nhớ giúp chuyển dữ liệu theo chiều ngang (SQL server)

Chuyên mục thảo luận các vấn đề liên quan đến ứng dụng quản lý và cơ sở dữ liệu

Moderator: Điều hành

muaphonui_2010
Thành viên ưu tú
Thành viên ưu tú
Posts: 531
Joined: Fri 26/11/2010 1:15 pm
Location: TP.HCM
Has thanked: 186 times
Been thanked: 32 times
Contact:

Nhớ giúp chuyển dữ liệu theo chiều ngang (SQL server)

Postby muaphonui_2010 » Fri 18/10/2019 9:27 pm

Chào cách bạn.
Mình có bảng dữ liệu như hình này:
Image
Và giờ mình muốn dữ liệu nó trải ra theo chiều ngang như hình dưới.
Image
Có bạn nào xử lý được thì giúp mình với nhé
Xin cảm ơn.



ncxn
Thành viên năng nổ
Thành viên năng nổ
Posts: 55
Joined: Thu 27/01/2011 9:37 am
Has thanked: 1 time
Been thanked: 6 times

Re: Nhớ giúp chuyển dữ liệu theo chiều ngang (SQL server)

Postby ncxn » Mon 21/10/2019 11:16 am

Thấy có gì đó sai sai.

Chỉ riêng mã hàng từ A(n)-> B(n)-> C(n) đã mệt rồi, chưa nó nó transform data

Dữ liệu mẫu nên post lên trang này:

http://sqlfiddle.com/#!18/b9080/1

FlyingFox
Guru
Guru
Posts: 814
Joined: Wed 20/04/2011 9:56 am
Been thanked: 323 times

Re: Nhớ giúp chuyển dữ liệu theo chiều ngang (SQL server)

Postby FlyingFox » Tue 22/10/2019 8:41 am

Có thể viết như sau
  1. SELECT t.mahang, t.tenhang, t.soluong, a1, a2, a3, a4, a5, a6, b1, b2, b3, b4, b5, b6, c1, c2, c3, c4, c5, c6
  2. FROM
  3.     (SELECT DISTINCT mahang, tenhang, soluong, loai
  4.       FROM hang) t
  5. LEFT JOIN
  6.     (SELECT mahang, tenting, soluong, cot1 AS a1, cot2 AS a2, cot3 AS a3, cot4 AS a4, cot5 AS a5, cot6 AS a6
  7.       FROM hang
  8.      WHERE loai = 'A') a
  9.   ON a.loai = t.loai AND a.mahang = t.mahang AND a.tenhang = t.tenhang AND a.soluong = t.soluong
  10. LEFT JOIN
  11.     (SELECT mahang, tenhang, soluong, cot1 AS b1, cot2 AS b2, cot3 AS b3, cot4 AS b4, cot5 AS b5, cot6 AS b6
  12.       FROM hang
  13.      WHERE loai = 'B') b
  14.   ON b.loai = t.loai AND b.mahang = t.mahang AND b.tenhang = t.tenhang AND b.soluong = t.soluong
  15. LEFT JOIN
  16.     (SELECT mahang, tenhang, soluong, cot1 AS c1, cot2 AS c2, cot3 AS c3, cot4 AS c4, cot5 AS c5, cot6 AS c6
  17.       FROM hang
  18.      WHERE loai = 'C') c
  19.   ON c.loai = t.loai AND c.mahang = t.mahang AND c.tenhang = t.tenhang AND c.soluong = t.soluong

muaphonui_2010
Thành viên ưu tú
Thành viên ưu tú
Posts: 531
Joined: Fri 26/11/2010 1:15 pm
Location: TP.HCM
Has thanked: 186 times
Been thanked: 32 times
Contact:

Re: Nhớ giúp chuyển dữ liệu theo chiều ngang (SQL server)

Postby muaphonui_2010 » Tue 22/10/2019 9:06 am

Cảm ơn anh.
Nhưng với dữ liệu của em là cột nhóm là cột động, nó có thể có thêm nhóm D, E..., tương tự mã hàng cũng vậy, nó là n.
Em đã xử lý trực tiếp trên code được rồi. nên khó quá bỏ qua nha anh và các bạn.
Cảm ơn các bạn.
Image


Return to “Ứng dụng Quản lý và Cơ sở dữ liệu”

Who is online

Users browsing this forum: No registered users and 0 guests