【发布时间】:2021-12-19 16:00:05
【问题描述】:
在 Azure SQL 数据库中,我有一个 EAV 样式表 AttributeValues,它存储多个属性值,如下所示:
| Id | Organization_Id | Attribute_Id | Value |
|---|---|---|---|
| 1 | 1 | 1 | Old Org 1 Description |
| 2 | 1 | 1 | New Org 1 Description |
| 3 | 2 | 1 | Old Org 2 Description |
| 4 | 2 | 1 | New Org 2 Description |
| 5 | 1 | 2 | Old Org 1 Title |
| 6 | 1 | 2 | New Org 1 Title |
| 7 | 2 | 2 | Old Org 2 Title |
| 8 | 2 | 2 | New Org 2 Title |
这些值需要转置为特定于组织的行,如下所示,其中包括每种类型的最新属性值(即顶部值,按 AttributeValues.Id DESC 排序):
| Organization_Id | Description | Title |
|---|---|---|
| 1 | New Org 1 Description | New Org 1 Title |
| 2 | New Org 2 Description | New Org 2 Title |
另外需要注意的是,工作查询需要遵守 索引视图 的所有限制,这意味着没有 PIVOT、没有 CTE 或派生表、没有窗口函数、没有子查询、没有外部连接等,因为描述和标题字段需要应用全文索引才能与 CONTAINS() 一起使用进行搜索。这个可以吗?
【问题讨论】:
-
您可以分离关注点并为历史版本使用历史表或临时表。
-
否 - 对于索引视图(例如自联接、OVER 子句、派生表、子查询、MIN ,最大,应用,枢轴)
标签: sql-server pivot full-text-search greatest-n-per-group indexed-view