我有两张桌子。
表 A 看起来像这样。
| 来源 | ID | 类型_ID | 错误信息 |
|---|---|---|---|
| ABC | 100 | 1 | 国家栏缺失 |
| ABC | 100 | 2 | 换算系数缺少小数 |
| BCA | 200 | 1 | 高度列中的错误值 |
| BCA | 200 | 2 | 转换系数应为 0.001 |
表 B 看起来像这样。
| 来源 | ID | 类型_1_ID | 错误信息_1 | 类型_2_ID | 错误信息_2 |
|---|---|---|---|---|---|
| ABC | 100 | ||||
| BCA | 200 |
我想根据源和 ID 列加入这两个表。如果您查看表 A,您可以看到 ID 100 和 200 我有两条记录,但区别在于 Type_ID 列和 Error_info 列。我希望这两个记录位于一行中,如下表所示。
| 来源 | ID | 类型_1_ID | 错误信息_1 | 类型_2_ID | 错误信息_2 |
|---|---|---|---|---|---|
| ABC | 100 | 1 | 国家栏缺失 | 2 | 换算系数缺少小数 |
| BCA | 200 | 1 | 高度列中的错误值 | 2 | 转换系数应为 0.001 |
有没有办法实现这一点。我尝试使用 case 语句,显然它不起作用。任何建议肯定会对我有帮助。
如果您只想使用表 A查看表 B 中建议的输出,则使用数据透视查询:
SELECT
source,
ID,
1 AS Type_1_ID
MAX(CASE WHEN Type_ID = 1 THEN Error_info END) AS Error_info_1,
2 AS Type_2_ID,
MAX(CASE WHEN Type_ID = 2 THEN Error_info END) AS Error_info_2
FROM yourTable
GROUP BY
source,
ID;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3437 次 |
| 最近记录: |