在 SQL Server 2000 中透视数据
透视数据是指将数据集从垂直的、面向列的格式转换为面向列的格式的过程。水平的、面向行的格式。换句话说,它允许您旋转表中的数据,使列变成行,反之亦然。
考虑以下两个表:
产品
ProductId | Name |
---|---|
1 | Product A |
2 | Product B |
产品Meta
ProductId | MetaKey | MetaValue |
---|---|---|
1 | A | Value A for Product A |
1 | B | Value B for Product A |
1 | C | Value C for Product A |
2 | A | Value A for Product B |
2 | B | Value B for Product B |
2 | C | Value C for Product B |
您想要获得一个结果集,该结果集将产品名称显示为行,元键显示为列,每个单元格中都有相应的元值:
ProductName | Meta A | Meta B | Meta C |
---|---|---|---|
Product A | Value A for Product A | Value B for Product A | Value C for Product A |
Product B | Value A for Product B | Value B for Product B | Value C for Product B |
要实现此枢轴,您可以在 SELECT 中结合使用条件聚合和 CASE 语句语句:
SELECT P.ProductId, P.Name, MIN(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS MetaA, MIN(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS MetaB, MIN(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS MetaC FROM Products AS P INNER JOIN ProductMeta AS PM ON PM.ProductId = P.ProductId GROUP BY P.ProductId, P.Name;
此查询将按产品 ID 和名称正确对行进行分组,并检索每个键所需的元值。
以上是如何使用条件聚合在 SQL Server 2000 中透视数据?的详细内容。更多信息请关注PHP中文网其他相关文章!