【发布时间】:2018-02-16 09:43:36
【问题描述】:
我需要在一个表中显示存储在 MS SQL 数据库中的 n 个键的键/值对组,每组一条记录,每个键一列。
我找到了该示例,但在我的情况下,键(最后是列)不固定,也必须来自数据库。 Group key-value columns into a single row
例子:
CREATE TABLE entries
([group_id] int, [attr_key] varchar(20), [attr_value] varchar(20))
;
INSERT INTO entries
([group_id], [attr_key], [attr_value])
VALUES
(1, 'color', 'blue'),
(1, 'size', 'L'),
(2, 'color', 'red'),
(2, 'size', 'M'),
(3, 'color', 'green'),
(3, 'size', 'M'),
(3, 'Vendor', 'myVendor') ,
(3, 'picture', 'Bear')
;
Fiddle 测试:http://sqlfiddle.com/#!18/c1ff2/1/0
| group_id | attr_key | attr_value |
|----------|----------|------------|
| 1 | color | blue |
| 1 | size | L |
| 2 | color | red |
| 2 | size | M |
| 3 | color | green |
| 3 | size | M |
| 3 | vendor | myVendor |
| 3 | picture | Bear |
结果应该是这样的:
| group_id | color | size | vendor | picture |
|----------|-------|------|----------|---------|
| 1 | blue | L | NULL | NULL |
| 2 | red | M | NULL | NULL |
| 3 | green | M | myVendor | Bear |
当用户稍后添加属性时,表也应该多一列而不更改 SQL 查询。
【问题讨论】:
标签: sql sql-server key-value relational relational-division