SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Chuyển nhóm các hàng có cùng ID sang một bảng khác

Đây thực sự là một trục xoay, còn được gọi là bảng chéo hoặc đôi khi chuyển vị

Một số cơ sở dữ liệu có các phương tiện chuyên dụng để làm việc đó, những cơ sở dữ liệu khác bạn phải sử dụng cú pháp nhóm. Tôi thích cái sau hơn vì nó hoạt động trên toàn cầu

Nếu đó là điều an ủi, bạn đã thực sự gần gũi!

SELECT
    DIM_KEY,
    MAX(CASE WHEN ATTR_NAME = 'UPC' THEN VALUE END) as UPC,
    MAX(CASE WHEN ATTR_NAME = 'DAIRY_CLM' THEN VALUE END) as DAIRY_CLM,
    MAX(CASE WHEN ATTR_NAME = 'KOSHER_CLM' THEN VALUE END) as KOSHER_CLM,
    MAX(CASE WHEN ATTR_NAME = 'FAT' THEN VALUE END) as FAT,
    MAX(CASE WHEN ATTR_NAME = 'CALORIES' THEN VALUE END) as CALORIES
FROM demo
GROUP BY DIM_KEY

Nó hoạt động như thế nào?

Chà, nếu bạn chạy phiên bản không được nhóm, không có hàm tối đa mà bạn đã có:

SELECT
    DIM_KEY,
    (CASE WHEN ATTR_NAME = 'UPC' THEN VALUE END),
    (CASE WHEN ATTR_NAME = 'DAIRY_CLM' THEN VALUE END),
    (CASE WHEN ATTR_NAME = 'KOSHER_CLM' THEN VALUE END),
    (CASE WHEN ATTR_NAME = 'FAT' THEN VALUE END),
    (CASE WHEN ATTR_NAME = 'CALORIES' THEN VALUE END)
FROM
   demo

Sau đó, bạn sẽ thấy dữ liệu của mình trở thành "đường chéo":

3005, 123423, null, null...
3005, null,   N,    null...
3005, null,   null, Y   ...

Trong mỗi cột (mỗi dim_key) chỉ có một giá trị, các giá trị còn lại là NULL

Việc thêm vào GROUP BY và MAX khiến các giá trị này thu gọn thành một hàng vì MAX () sẽ chỉ trả về giá trị từ cột và làm cho tất cả các giá trị rỗng biến mất. Đó là thuộc tính nội tại của nhóm, dữ liệu hàng không "ở cùng nhau" - trong nhóm của một DIM_KEY cụ thể, MAX (DAIRY_CLM) có thể đến từ bất kỳ hàng nào, MAX (KOSHER_CLM) có thể đến từ bất kỳ hàng nào khác .. Trong thực tế, điều này có nghĩa là các giá trị đơn lẻ được chọn, các giá trị rỗng sẽ bị loại bỏ, tất cả chúng đều xuất hiện trên cùng một hàng ..

..và do đó, dữ liệu dọc của bạn đã đi ngang, sau khi đi qua đường chéo



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Xem lược đồ của tập kết quả trong SQL Server Management Studio

  2. 'DATE' không phải là tên hàm tích hợp sẵn được công nhận

  3. Không thể kết nối với SQL Server trong miền khác bằng SSMS và Trình quản lý thông tin đăng nhập Windows 7

  4. Sql Server management studio cách tự động viết hoa

  5. Tại sao cú pháp SSMS của Microsoft lại làm nổi bật cấu hình từ?