【发布时间】:2021-08-22 11:07:51
【问题描述】:
我在 SQL 中有 2 个表,分别是 Pets 和 Customers
宠物桌:
| Pet ID | PetType |
|---|---|
| 01 | Dog |
| 02 | Cat |
| 03 | Mouse |
| 04 | Fish |
客户表:
| CustID | CustName | PetType | IsPet |
|---|---|---|---|
| 01 | Cust1 | Dog | Y |
| 02 | Cust2 | Cat | Y |
| 03 | Cust3 | Dog | Y |
| 04 | Cust4 | Fish | Y |
| 05 | Cust5 | Mouse | Y |
| 06 | Cust6 | Dog | Y |
我需要以这样一种方式选择记录,即客户列表与宠物的透视列连接在一起。 例如,结果应该是:
| CustID | CustName | Dog | Cat | Mouse | Fish |
|---|---|---|---|---|---|
| 01 | Cust1 | Yes | |||
| 02 | Cust2 | Yes | |||
| 03 | Cust3 | Yes | |||
| 04 | Cust4 | Yes | |||
| 05 | Cust5 | Yes | |||
| 06 | Cust6 | Yes |
对于 SQL 查询的任何建议或帮助将不胜感激。
【问题讨论】:
-
如果您不知道最终表中的列(即它们来自第一个表),那么您将需要动态 SQL。
-
这是一个枢轴,而不是一个非枢轴。 Pivot 使用聚合将行转换为列,而 unpivot 将列转换为行(并且不需要聚合)。
标签: sql sql-server pivot dynamic-pivot