PDA

View Full Version : Chuyển dòng thành cột trong MS SQL?



robertquy
29-10-2007, 16:30
Các pác chỉ giúp code tạo một bảng mới field name = dữ liệu của một bảng:

Bảng nguồn
ProductID ProductName
--------- -----------
P001 Sản phẩm 1
P002 Sản phẩm 2
P003 Sản phẩm 3
....

bảng kết quả:

P001 P002 P003 ...
---- ---- ---------
Sản phẩm 1 Sản phẩm 2 Sản phẩm 3

xbacala
29-10-2007, 19:44
cái này có người hỏi và đã được trả lời rồi. tìm lại trong mục "MS SQL Server" xem !

robertquy
30-10-2007, 10:23
Trong bài trả lời trước chỉ làm lệnh Print thôi, còn mình muốn tạo bảng mới từ các dòng của một bảng.
Các pác xem giúp nào.

thangvq
31-10-2007, 09:16
Có thể làm như sau:

INSERT INTO NEWTABLE (P001, P002, P003)
SELECT
P001 = CASE WHEN ProductID = 'P001' THEN ProductName ELSE NULL END,
P002 = CASE WHEN ProductID = 'P002' THEN ProductName ELSE NULL END,
P003 = CASE WHEN ProductID = 'P003' THEN ProductName ELSE NULL END
FROM OLDTABLE

Truongtn
31-10-2007, 16:15
@robertquy: Bạn nên tìm hiểu về mệnh đề Pivot trong câu select. Nếu là sql 2005 thì có sẵn, còn sql 2000 phải tự viết.

Tham khảo:
http://msdn2.microsoft.com/en-us/library/ms177410.aspx
http://sqladvice.com/blogs/bswartz/archive/2005/12/27/14463.aspx

Chúc thành công

cuteo_saigon
03-11-2007, 15:39
Table của bạn khó hình dung
VD table ProductProperty Gồm ProductID,PropName,PropValue có data như sao

ProductID PropName PropValue
=======================================
1 Màu Đỏ
1 Hình Vuông
2 Màu Vàng
2 Hình Thoi


SELECT ProductID,
min(CASE when (PropName) = 'Màu' then (PropValue) else null END) as Mau,
min(CASE when (PropName) = 'Hình' then (PropValue) else null END) as Hinh
FROM ProductProperty
GROUP BY ProductID


Chúc thành công

robertquy
08-11-2007, 09:37
Cám các bạn đã tìm giải pháp giúp mình

robertquy
08-11-2007, 11:18
Sau khi mình làm thử thì được rồi. Nhưng mình muốn tạo Column động theo Group by PRODUCTID.
Các bạn xem giúp mình nha. Mình có kèm file Mô tả kết quả đình kèm