ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > SQL in Excel > 在SQL中如何利用多列数据生成唯一ID进行多表关联?

在SQL中如何利用多列数据生成唯一ID进行多表关联?

作者:绿色风 分类: 时间:2022-08-17 浏览:176
楼主
wise
Q:在SQL中如何利用多列数据生成唯一ID进行多表关联?
A:在本题中,首先分别对其中两个表进行左边汇总,然后再对其他四个表进行右边汇总。因为多个表之间没有唯一ID,只能通过多列字段连接生成唯一ID。
该操作例子比较复杂,但可以很大程度理清减少笛卡尔值出现。主要SQL语句如下:


  1. select  A.ID,A.期初帳面,A.期初庫存,A.帳面數量,A.入庫數量,A.出庫數量,A.庫存差異,A.短少數,A.在途數,A.預期結存,B.期初帳面數,B.期初庫存數,B.入庫帳面數,B.入庫庫存數,B.出庫帳面數,B.出庫庫存數,B.補料帳面數,B.補料庫存數 from
  2. (select 廠別 & "-" & 倉別 &"-" & 品名 & "-" & 物料編號 & "-" & 單位 as ID,sum(期初帳面) as 期初帳面 ,sum(期初庫存) as 期初庫存,sum(帳面數量) as 帳面數量,sum(入庫數量) as 入庫數量,sum(出庫數量) as 出庫數量 ,sum(庫存差異) as 庫存差異 ,sum(短少數) as 短少數,sum(在途數) as 在途數,sum(預期結存)  as 預期結存 from

  3. ( select 廠別,倉別,品名,物料編號,單位,期初帳面,期初庫存,帳面數量,入庫數量,出庫數量,庫存差異,短少數,在途數,預期結存  from [A物控表$A2:O10000]

  4. union all

  5. select 廠別,倉別,品名,物料編號,單位,期初帳面,期初庫存,帳面數量,入庫數量,出庫數量,庫存差異,短少數,在途數,預期結存  from [C物控表$A2:O10000] )

  6. group by  廠別 & "-" & 倉別 &"-" & 品名 & "-" & 物料編號 & "-" & 單位) A

  7. left join
  8. (select 廠別 & "-" & 倉別 &"-" & 品名 & "-" & 物料編號 & "-" & 單位 as ID, sum(期初帳面數) as 期初帳面數,sum(期初庫存數) as 期初庫存數,sum(入庫帳面數) as 入庫帳面數,sum(入庫庫存數)as 入庫庫存數,sum(出庫帳面數) as 出庫帳面數,sum(出庫庫存數) as 出庫庫存數,sum(補料帳面數) as 補料帳面數,

  9. sum(補料庫存數) as 補料庫存數
  10. from
  11. ( select  廠別,倉別,品名,物料編號,單位,帳面數 as 期初帳面數 ,庫存數 as 期初庫存數,0 as  入庫帳面數 ,0 as 入庫庫存數,0 as 出庫帳面數,0 as 出庫庫存數,0 as 補料帳面數,0 as  補料庫存數  from  [期初明細$]
  12. union all
  13. select  廠別,倉別,品名,物料編號,單位,0 as 期初帳面數,0 as 期初庫存數,帳面數 as  入庫帳面數, 庫存數 as 入庫庫存數 ,0 as 出庫帳面數,0 as 出庫庫存數,0 as 補料帳面數,0 as  補料庫存數  from [入庫明細$]
  14. union all
  15. select  廠別,倉別,品名,物料編號,單位,0 as 期初帳面數,0 as 期初庫存數,0 as  入庫帳面數 ,0 as 入庫庫存數,帳面數 as 出庫帳面數,庫存數 as 出庫庫存數 ,0 as 補料帳面數,0 as  補料庫存數  from [出庫明細$]
  16. union all
  17. select  廠別,倉別,品名,物料編號,單位,0 as 期初帳面數,0 as 期初庫存數,0 as  入庫帳面數 ,0 as 入庫庫存數,0 as 出庫帳面數,0 as 出庫庫存數,帳面數 as 補料帳面數,庫存數 as  補料庫存數   from [補料明細$] )
  18. group by  廠別 & "-" & 倉別 &"-" & 品名 & "-" & 物料編號 & "-" & 單位) B

  19. on A.ID=B.ID


data.rar
2楼
亡者天下
小7太强了

这个SQL字符串的长度有限制没有啊?

这么长啊?
3楼
LOGO
最长:2048
4楼
chenguanghui
看不懂了
5楼
北虹桥
太长看眼花了,抓不住重点。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap