首頁 > 資料庫 > mysql教程 > 如何在 SQL Server 2000 中透視資料以將基於行的資料轉換為基於列的格式?

如何在 SQL Server 2000 中透視資料以將基於行的資料轉換為基於列的格式?

Barbara Streisand
發布: 2024-12-31 18:41:11
原創
647 人瀏覽過

How Can I Pivot Data in SQL Server 2000 to Transform Row-Based Data into a Column-Based Format?

在SQL Server 2000 中透視資料:詳細說明

SQL Server 2000 提供了一個稱為透視的強大功能,使用戶能夠將資料從基於行的格式到基於列的格式。這對於需要跨多列匯總資料或建立資料矩陣視圖的場景非常有用。

問題陳述:

在一個特定實例中,使用者有兩個表:

  • 產品:
  • 產品:

產品:

包含基本產品訊息,例如產品ID 和名稱。

產品元資料:

使用 MetaKey 和 MetaValue 等欄位儲存產品元資料。

SELECT P.ProductId, P.Name
    , MIN(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS A
    , MIN(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS B
    , MIN(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS C
FROM Products AS P
JOIN ProductMeta AS PM
    ON PM.ProductId = P.ProductId
GROUP BY P.ProductId, P.Name
登入後複製
使用者需要一個對MetaValue 欄位進行透視的結果集來自基於MetaKey 資料列的產品元表,其中產品表中的ProductId 和Name 欄位作為行

最佳解決方案:

  • 要實現此轉換,您可以使用以下SQL查詢:
  • 說明:
SELECT 子句指定要包含的欄位

MIN()聚合函數用於傳回每組ProductId和Name中每個MetaKey的最小值。

CASE表達式用於決定哪一列(A、B 或 C)根據 MetaKey 值進行填充。

GROUP BY 子句指定定義結果中的行的列set.注意:在這種情況下使用GROUP BY 子句對於確保行正確分組至關重要。不使用 GROUP BY 子句將導致交錯結果。此外,未包含在 GROUP BY 子句中的每一列都必須包裝在聚合函數中(在本例中為 MIN())。

以上是如何在 SQL Server 2000 中透視資料以將基於行的資料轉換為基於列的格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板