0

我有一个包含以下数据的表:

subitem, subitempart, subitemvalue
 'Badge", 'Issued to', 'abc'
 'Badge', 'Located at', 'bcd'
 'Badge, 'signed for', 'def'
 'key', 'number', '123'
 'key', 'Issued to', 'abc'

子项名称来自具有两个字段的单独表:[code] 和 [description]。一个子项可以有 1 到 20 个子项,每个项都不同。

我的客户希望看到如下:

[Subitem], [Issued to], [Located at], [Signed for], [Number]
'Badge'  , 'abc'      , 'bcd'       , 'def'       , NULL
'key'    , 'abc'      , NULL        , NULL        , '123'

所以我想要做的是将所有可用的子项放在列中,然后将值放在正确的字段中,然后删除每行上为空的列。

这在 MS SQL 中是否可能,如果是,如何?

提前感谢您的帮助。

rg. 埃里克

4

2 回答 2

0

你可以给你一个数据透视表,在 sql 中它并不难。

SELECT * FROM item
PIVOT (max(subitemvalue) 
    for subitempart in ([Issued to],[Located at],[signed to],[number])) as items

希望这可以帮助

于 2013-11-05T06:34:21.497 回答
0

看起来你正试图改变你的结果。一种选择是使用PIVOT命令。我更好地理解它使用MAX虽然CASE

select subitem,
   max(case when subitempart = 'Issued to' then subitemvalue end) IssuedTo,
   max(case when subitempart = 'Located at' then subitemvalue end) LocatedAt,
   max(case when subitempart = 'signed for' then subitemvalue end) SignedFor,
   max(case when subitempart = 'number' then subitemvalue end) number
from yourtable
group by subitem
于 2013-11-04T13:34:19.357 回答