• 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 đổi bảng sang hàng ngang (các dòng cùng nhóm)

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: 541
Joined: Fri 26/11/2010 1:15 pm
Location: TP.HCM
Has thanked: 189 times
Been thanked: 33 times
Contact:

Nhờ giúp chuyển đổi bảng sang hàng ngang (các dòng cùng nhóm)

Postby muaphonui_2010 » Sat 23/05/2020 12:05 pm

Chào các bạn.
Mình có 1 bảng dữ liệu có nhiều dòng, Giờ mình muốn chuyển nó thành cột tương ứng với các dòng đó nếu nó có 1 nhóm.
Như hình này nè các bạn.
Image

Có nghĩa là : các dòng cùng chung nhóm thì cho nó lên cùng 1 dòng ở các cột phía sau.
Mình chũng bị dữ liệu mẫu ở dưới:
Đây là cấu trúc bảng của mình
  1. SET QUOTED_IDENTIFIER ON
  2. GO
  3.  
  4. CREATE TABLE [dbo].[Table_1](
  5.     [idchinh] [INT] IDENTITY(1,1) NOT NULL,
  6.     [nhom] [INT] NULL,
  7.     [col1] [nvarchar](50) NULL,
  8.     [col2] [FLOAT] NULL,
  9.  CONSTRAINT [PK_Table_1_1] PRIMARY KEY CLUSTERED
  10. (
  11.     [idchinh] ASC
  12. )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
  13. ) ON [PRIMARY]
  14.  
  15. GO


Còn đây là dữ liệu mẫu để các bạn chèn vào cho lẹ
[sql]SET IDENTITY_INSERT [dbo].[Table_1] ON
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (1, 10, N'A', 0.1)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (2, 10, N'B', 0.3)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (3, 10, N'C', 0.1)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (4, 12, N'D', 0.2)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (5, 12, N'E', 0.5)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (6, 13, N'A', 0.6)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (7, 14, N'C', 0.1)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (8, 14, N'A', 0.4)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (9, 15, N'E', 0.5)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (10, 15, N'A', 0.6)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (11, 15, N'C', 0.1)
INSERT [dbo].[Table_1] ([idchinh], [nhom], [col1], [col2]) VALUES (12, 15, N'A', 0.4)
SET IDENTITY_INSERT [dbo].[Table_1] OFF[/sql]
Nhờ các bạn giúp mình với nhé
Xin cảm ơn.



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

Re: Nhờ giúp chuyển đổi bảng sang hàng ngang (các dòng cùng nhóm)

Postby muaphonui_2010 » Sat 23/05/2020 12:36 pm

Mình đã mò được rồi, cảm ơn các bạn.
  1. WITH Orders
  2. AS (SELECT ROW_NUMBER() OVER (Partition BY nhom ORDER BY nhom) AS RowID,
  3.         *
  4.     FROM Table_1)
  5. SELECT nhom AS [ORDER#],
  6.     MIN(col11) AS col11,
  7.     MIN(col21) AS col21,
  8.     MIN(col12) AS col12,
  9.     MIN(col22) AS col22,
  10.     MIN(col13) AS col13,
  11.     MIN(col23) AS col23,
  12.     MIN(col14) AS col14,
  13.     MIN(col24) AS col24
  14. FROM (SELECT ROW_NUMBER() OVER (Partition BY nhom ORDER BY nhom) AS RowID,
  15.         nhom,
  16.         'col1' + CAST(RowID AS VARCHAR) AS col1Num,
  17.         'col2' + CAST(RowID AS VARCHAR) AS col2Num,
  18.         col1,
  19.         col2
  20.        
  21.     FROM Orders) AS Pvt
  22. Pivot (MIN(col1)
  23.     FOR col1Num IN ([col11], [col12], [col13], [col14])) AS Pvt1
  24. Pivot (MIN(col2)
  25.     FOR col2Num IN ([col21], [col22], [col23], [col24])) AS Pvt2
  26. GROUP BY nhom;


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 2 guests