sql - 在 SQL 中连接多个表 - 最佳实践
问题描述
我有 3 张桌子。
表 1:合同主
ContractNo SDValue Value CityId AreaCode
C0001 840888 18482 CY00004 AR0001
C0002 133500 35000 CY00004 AR0001
C0003 NULL 4200 CY00004 AR0001
C0004 73440 7400 CY00004 AR0001
C0005 73440 7400 CY00005 AR0002
表2:合约详情
ContractNo Code TxPr Amt
C0001 1 25 2102220.50
C0001 2 25 2102220.50
C0001 3 25 2102220.50
C0002 1 25 333750.00
C0002 2 25 333750.00
C0003 1 25 333750.00
C0003 2 25 333750.00
表3:城市
CityID CName
CY00004 AMR
CY00005 EEE
CY00006 TRE
CY00008 WSE
表4:面积
AreaCode AName
AR0001 COK
AR0002 TCR
AR0003 EKM
AR0004 RTT
我的预期结果是
ContractNo SDValue Value CityId AreaCode Amt CName AName
我写的脚本
select A.*,B.Amt,C.CName,D.AName
from ContractMain A INNER JOIN ContractDetails B on A.ContractNo=B.ContractNo
Inner join City C on C.CityId=A.CityId
Inner join Area D on D.AreaCode=A.AreaCode
在这里,我得到了针对 ContractNo 的重复值,因为在表 B 中,我们为列 Code 获得了不同的值
我需要为 ContractNo 获取不同的值。这是实现这一目标的最佳方法
解决方案
select A.*,SUM(B.Amt) TotalAmt,C.CName,D.AName
from ContractMain A INNER JOIN ContractDetails B on A.ContractNo=B.ContractNo
Inner join City C on C.CityId=A.CityId
Inner join Area D on D.AreaCode=A.AreaCode
GORUP BY A.*, C.Name, D.AName
分组将删除重复,并将为您提供所需字段的总和
推荐阅读
- javascript - 以编程方式将 div 添加到刷新表中
- python - FileNotFoundError: `[Errno 2] No such file or directory: ' 用于根据几个类显示条形图
- php - 使用 array_search() 检查值是否存在
- python - Pi UART接收额外字节
- google-colaboratory - 在 colab 上使用 CONDA 安装软件包时出错
- javascript - 从 json 树中获取所需键的值
- reactjs - 为什么在使用功能过去时不需要对反应进行反应?
- c++ - 返回捕获 lambda 的 lambda 时发出 Clang 警告
- statsmodels - statsmodels.logit 如何处理连续但有界 (0,1) 的目标值?
- android - 如何在本机反应中使状态栏透明?