2012-02-10 19 views
15

Tôi muốn sao chép một số dữ liệu trong một bảng trong cơ sở dữ liệu SQL Server 2008 và sao chép nó vào cùng một bảng và thay đổi các giá trị trong một cột của dữ liệu được sao chép sang một số được chỉ định. Dưới đây là một ví dụ, trong bảng sau gọi Metric, dữ liệu là:Sao chép dữ liệu vào và từ cùng một bảng và thay đổi giá trị của dữ liệu đã sao chép trong một cột thành giá trị được chỉ định

Key Name MetricValue 
112 Joe  34 
112 Fred  38 
112 Frank 12 
112 John  56 
112 David 87 
112 Sue  43 
234 Alli  34 
234 Susan 38 
234 Anne  12 
234 Franki 56 

Tôi muốn sao chép tất cả những mục với khóa 112 để Metric và gán tất cả các hàng sao chép một chính của 387, điều này cho phép các giá trị trong bảng Số liệu là:

Key Name MetricValue 
112 Joe  34 
112 Fred  38 
112 Frank 12 
112 John  56 
112 David 87 
112 Sue  43 
234 Alli  34 
234 Susan 38 
234 Anne  12 
234 Franki 56 
387 Joe  34 
387 Fred  38 
387 Frank 12 
387 John  56 
387 David 87 
387 Sue  43 

Lưu ý, bảng này cũng có khóa chính mà tôi chưa trình bày ở trên.

Làm thế nào tôi có thể làm điều này trong SQL đó là tương thích với SQL Server 2008.

Thanks for the help,

Tony

Trả lời

25

Ở đây bạn thử ..

INSERT INTO Metric(Key,Name,MetricValue) 
SELECT 387,Name,MetricValue 
FROM Metric 
WHERE Key = 112 
+1

Terrific, cảm ơn đã giúp đỡ. Tôi biết nó sẽ là tầm thường. Tôi sẽ thử nó sớm thôi. – flyhai

+0

một lời nhắc nhở nhẹ nhàng: chạy phần chọn đầu tiên (và cú pháp dễ dàng cho phép điều này, làm cho một truy vấn tốt hơn!) Nếu không, vấn đề có thể xảy ra! – JosephDoggie

+0

@up và sử dụng một số 'giới hạn 5' để không giết DB nếu bạn có nhiều mục nhập :) –

Các vấn đề liên quan