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

Điều hành viên: Điều hành

Đăng trả lời
muaphonui_2010
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 553
Ngày tham gia: Thứ 6 26/11/2010 1:15 pm
Đến từ: TP.HCM
Has thanked: 190 times
Been thanked: 36 times
Tiếp xúc:

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

Gửi bài by muaphonui_2010 »

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.
Hình ảnh

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
[sql]SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Table_1](
[idchinh] [int] IDENTITY(1,1) NOT NULL,
[nhom] [int] NULL,
[col1] [nvarchar](50) NULL,
[col2] [float] NULL,
CONSTRAINT [PK_Table_1_1] PRIMARY KEY CLUSTERED
(
[idchinh] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO[/sql]

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ú
Bài viết: 553
Ngày tham gia: Thứ 6 26/11/2010 1:15 pm
Đến từ: TP.HCM
Has thanked: 190 times
Been thanked: 36 times
Tiếp xúc:

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

Gửi bài by muaphonui_2010 »

Mình đã mò được rồi, cảm ơn các bạn.
[sql]With Orders
As (Select ROW_NUMBER() Over (Partition By nhom Order By nhom) As RowID,
*
From Table_1)
Select nhom As [Order#],
Min(col11) As col11,
Min(col21) As col21,
Min(col12) As col12,
Min(col22) As col22,
Min(col13) As col13,
Min(col23) As col23,
Min(col14) As col14,
Min(col24) As col24
From (Select ROW_NUMBER() Over (Partition By nhom Order By nhom) As RowID,
nhom,
'col1' + Cast(RowID as varchar) As col1Num,
'col2' + Cast(RowID as varchar) As col2Num,
col1,
col2

From Orders) As Pvt
Pivot (Min(col1)
For col1Num In ([col11], [col12], [col13], [col14])) As Pvt1
Pivot (Min(col2)
For col2Num In ([col21], [col22], [col23], [col24])) As Pvt2
Group By nhom;[/sql]
Đăng trả lời

Quay về