sách gpt4 ai đã đi

Chơi với chuyển đổi hàng và cột cơ sở dữ liệu SQL2005

In lại Tác giả:qq735679552 Thời gian cập nhật: 2022-09-29 22:32:09 26 4
mua khóa gpt4 Nike

CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.

Bài đăng trên blog CFSDN này, Playing with SQL2005 Database Row and Column Conversion, được tác giả thu thập và biên soạn. Nếu bạn quan tâm đến bài viết này, vui lòng thích nó.

Lưu ý: Phương pháp chuyển đổi cột thành hàng có thể là phát minh độc đáo của tôi, haha, vì tôi không thể tìm thấy nó trên Internet, tôi tự viết tất cả, sử dụng SysColumns của hệ thống.

1. Phương pháp chuyển đổi hàng thành cột.

Trước tiên chúng ta hãy nói về phương pháp chuyển đổi hàng thành cột. Điều này dễ nghĩ hơn và có thể giải quyết bằng cách sử dụng SQL và case when.

Đạt được mục đích.

Chơi với chuyển đổi hàng và cột cơ sở dữ liệu SQL2005

  .

1: Tạo cơ sở dữ liệu để thử nghiệm.

Sao chép mã Mã như sau:

TẠO BẢNG RowTest(
    [Tên] [nvarchar](10) NULL,--tên
    [Khóa học] [nvarchar](10) NULL,--Tên khóa học
    [Record] [int] NULL--Điểm của khóa học
)

2: Thêm cơ sở dữ liệu thử nghiệm (thêm dữ liệu gọn gàng trước).

  .

  .

Sao chép mã Mã như sau:

chèn vào các giá trị RowTest ('Zhang San', 'Tiếng Trung', '91') chèn vào các giá trị RowTest ('Zhang San', 'Toán học', '92') chèn vào các giá trị RowTest ('Zhang San', 'Tiếng Anh', '93') chèn vào các giá trị RowTest ('Zhang San', 'Sinh học', '94') chèn vào các giá trị RowTest ('Zhang San', 'Vật lý', '95') chèn vào các giá trị RowTest ('Zhang San', 'Hóa học', '96') .

  .

chèn vào các giá trị RowTest ('Lịch sử','Tiếng Trung','81') chèn vào các giá trị RowTest ('Lịch sử','Toán học','82') chèn vào các giá trị RowTest ('Lịch sử','Tiếng Anh','83') chèn vào các giá trị RowTest ('Lịch sử','Sinh học','84') chèn vào các giá trị RowTest ('Lịch sử','Vật lý','85') chèn vào các giá trị RowTest ('Lịch sử','Hóa học','86') .

chèn vào các giá trị RowTest ('Xiaosheng','Tiếng Trung','71') chèn vào các giá trị RowTest ('Xiaosheng','Toán học','72') chèn vào các giá trị RowTest ('Xiaosheng','Tiếng Anh','73') chèn vào các giá trị RowTest ('Xiaosheng','Sinh học','74') chèn vào các giá trị RowTest ('Xiaosheng','Vật lý','75') chèn vào các giá trị RowTest ('Xiaosheng','Hóa học','76') 。

  .

3: Ý tưởng thiết kế.

  Nguyên tắc chuyển đổi hàng thành cột là tìm ra danh mục của hàng và sử dụng nó làm trường truy vấn, sử dụng trường hợp khi thêm điểm hiện tại vào trường hiện tại và cuối cùng sử dụng nhóm theo để tích hợp dữ liệu lại với nhau.

4: Phương pháp chung.

  .

Sao chép mã Mã như sau:

khai báo @sql nvarchar(max) đặt @sql='select Name' chọn @sql=@sql+','+'isnull(max( trường hợp khi Course='''+TCourse.Course+''' sau đó Record kết thúc ),0)'+TCourse.Course từ (chọn Course riêng biệt từ RowTest)TCourse .

  .

đặt @sql=@sql+' từ nhóm RowTest theo Tên sắp xếp theo Tên' in @sql exec(@sql) .

  .

Mô tả: Lấy tất cả tên khóa học dưới dạng các cột (bảng truy vấn TCourse).

        Sử dụng phương thức when để viết rõ câu lệnh SQL.

5: Thí nghiệm ngoại khóa.

(1) Thêm dữ liệu.

  .

Sao chép mã Mã như sau:

chèn vào các giá trị dbo.RowTest ('Niche', 'Sinh học', '110')

  .

Việc xóa phương thức max sẽ dẫn đến lỗi vì một hàng có thể tương ứng với nhiều hàng dữ liệu.

(2) Thêm dữ liệu.

  .

Sao chép mã Mã như sau:

chèn vào các giá trị dbo.RowTest ​​('Niche','Máy tính','110')

  .

Sẽ có một cột bổ sung trong dữ liệu, nhưng nếu những người khác không có khóa học này thì giá trị sẽ là 0.

Đến thời điểm này, việc chuyển đổi hàng sang cột dữ liệu đã ổn.

(ii) Một phương pháp mới để chuyển đổi cột thành hàng đã bắt đầu.

Đạt được mục đích.

Chơi với chuyển đổi hàng và cột cơ sở dữ liệu SQL2005

1: Nguyên tắc thực hiện.

Tôi đã xem phương pháp của những người khác trên Internet và về cơ bản họ sử dụng lệnh union all để chuyển đổi từng cái một, tôi không nghĩ là phương pháp này hữu ích lắm.

Đầu tiên, tôi nghĩ đến việc xóa tất cả tên cột, vì vậy tôi đã tìm kiếm trực tuyến để có được tất cả tên cột trong bảng.

 Sau đó, tôi có thể kết nối bảng chính và bảng được tạo bởi các tên cột để có thể tạo thành số lượng cột cần thiết và sau đó có thể xác định giá trị dựa trên phán đoán, haha.

2: Tạo bảng.

Sao chép mã Mã như sau:

tạo bảng CoulumTest
(
 Tên nvarchar(10),
 Ngôn ngữ int,
 Toán,
 Tiếng Anh quốc tế

)

3: Thêm dữ liệu.

Sao chép mã Mã như sau:

chèn vào các giá trị CoulumTest (N'张三',90,91,92)
chèn vào các giá trị CoulumTest (N'李四',80,81,82)

4: Đây chính là địa điểm kinh điển.

Sao chép mã Mã như sau:

chọn CT.Name,Col.name Khóa học,
(trường hợp khi Col.name=N'Chinese' thì CT.Chinese khi Col.name=N'Mathematics' thì CT.Mathematics
 khi Col.name=N'English' thì CT.English kết thúc) là điểm từ CoulumTest CT
nối trái (chọn tên từ SysColumns Where id=Object_Id('CoulumTest')) Col trên Col.name<>'Name'

Bạn đọc đúng rồi đấy, có thể giải quyết trong một câu, nhưng có một câu hỏi khiến tôi bối rối. Tôi nghĩ là nó chưa được đơn giản hóa đủ. Sẽ tốt hơn nếu case when không được sử dụng. Xin hãy cho tôi một số lời khuyên, các bậc thầy. Dựa vào đâu?

  .

Tên của Col trực tiếp quyết định đến điểm số.

Cuối cùng, bài viết này về việc chơi với chuyển đổi hàng và cột cơ sở dữ liệu SQL2005 kết thúc tại đây. Nếu bạn muốn biết thêm về việc chơi với chuyển đổi hàng và cột cơ sở dữ liệu SQL2005, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

26 4 0
qq735679552
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com