SQL Server 2012查询以提取数据子集

时间:2014-03-03 15:53:06

标签: sql-server-2012

我正在尝试2nf一些数据:

Refid | Reason
------|---------
1     | Admission
1     | Advice and Support
1     | Behaviour

正如您所看到的,一个人可能有多种原因,因此我需要另一个表格具有以下格式:

Refid | Reason1   | Reason2            | Reason3     |  ETC...
------|-----------|--------------------|-----------
1     | Admission | Advice and Support | Behaviour

但我不知道如何编写查询来提取数据并将其写入这样的新表中。原因没有其他标准的日期,这些标准会使任何特殊顺序成为任何理由。所有原因都在转介时分配。

感谢您的帮助.. SQL Server 2012

1 个答案:

答案 0 :(得分:1)

您正在建模多对多关系

你需要3张桌子

- One for Reasons (say ReasonID and Reason)
- One for each entity identified by RefID (say RefID and ReferenceOtherData)
- An junction (or intersection) table with the keys (RefID, ReasonID)

这样,

  • 多个原因可以适用于一个Ref实体
  • 多个参考可以有相同的原因

您将重复的列转换为行。