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
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.
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
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.