【发布时间】:2011-05-24 03:05:41
【问题描述】:
我有一个允许在 GUI 中创建自定义字段的产品。我创建了三个字段:系统发货日期、系统保修结束日期和系统保修说明。遗憾的是,系统将这些填充为行,而不是列。
例子:
Machine_GroupID | agentGuid | fieldName | fieldValue
-----------------------------------------------------------------------------
systemABC.companyABC | 57537921 | System Ship Date | 1/1/1900
systemABC.companyABC | 57537921 | System Warranty End Date | 1/1/1950
systemABC.companyABC | 57537921 | System Warranty Notes | Test notes
system123.companyABC | 48394844 | System Ship Date | 1/1/1900
system123.companyABC | 48394844 | System Warranty End Date | 1/1/1950
system123.companyABC | 48394844 | System Warranty Notes | Test notes
systemXYZ.companyABC | 99948403 | System Ship Date | 1/1/1900
systemXYZ.companyABC | 99948403 | System Warranty End Date | 1/1/1950
systemXYZ.companyABC | 99948403 | System Warranty Notes | Test notes
我需要将系统发货日期作为一列返回,系统保修结束日期作为一列返回,系统保修说明作为一列返回。如果我使用 CASE WHEN 语句:
CASE WHEN sim.fieldName = 'System Ship Date'
THEN sim.fieldValue END AS 'System Ship Date',
CASE WHEN sim.fieldName = 'System Warranty End Date'
THEN sim.fieldValue END AS 'System Warranty End Date',
CASE WHEN sim.fieldName = 'System Warranty Notes'
THEN sim.fieldValue END AS 'System Warranty Notes'
数据显示在每台计算机上:
header1 header2 header3
数据1 NULL NULL
NULL 数据2 NULL
NULL NULL 数据3
我需要它看起来像这样:
header1 header2 header3
数据1 数据2 数据3
我以为我可以以某种方式使用 MAX(),但我是新手,这超出了我的能力。或者,我知道我可以创建一个临时表,但我也不知道。我已经在网上和堆栈上进行了广泛的搜索,但据我所知,这是 CASE WHEN 语句。
【问题讨论】:
-
听起来您需要一个所谓的数据透视表,但并非每个 RDMS 都支持该功能。哪个是你的?
标签: sql