SQL Server 使用最大聚合和多个表构造SQL查询

pkln4tw6  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(162)

我正试图从三个不同的表中检索数据。
表1套件_续

  • 保存工具包唯一ID、工具包内容物部件号和工具包修订版本等。

| 试剂盒控制ID|试剂盒_CONT_部件编号|套件_续_修订版|套件_续_数量|
| - ------|- ------|- ------|- ------|
| 1个|美国广播公司|1个|第二章|
| 1个|DEF|1个|1个|
| 第二章|全球健康指数|1个|三个|
| 第二章|美国广播公司|1个|四个|
| 三个|美国广播公司|第二章|五个|
...
表2套件_部件编号

  • 保存试剂盒唯一ID、试剂盒部件号和试剂盒版本等

| 试剂盒ID|套件_部件编号|套件_修订版|
| - ------|- ------|- ------|
| 1个|试剂盒-1|1个|
| 第二章|试剂盒-2|1个|
| 三个|试剂盒-1|第二章|
| 四个|试剂盒-3|1个|
...
表3部件编号_价格

  • 保存部件编号、部件价格、价目表版本等

| 部件编号|部件编号_价格|价目表_修订版|
| - ------|- ------|- ------|
| 美国广播公司|五百|1个|
| DEF|七百|1个|
| 全球健康指数|九百|1个|
| 美国广播公司|五百五十|第二章|
| DEF|七百五十|第二章|
| 全球健康指数|九五零|第二章|
...
我需要一个查询返回:
| 套件_部件编号|试剂盒_CONT_部件编号|套件_续_数量|套件_修订版|部件编号_价格|价目表_修订版|
| - ------|- ------|- ------|- ------|- ------|- ------|
将所有KIT_CONT PN加入KIT_PN ON ID编号,其中每个套件的套件版本最高,将PN_Price加入PN = KIT_CONT_PN,其中每个PN的价格列表版本最高

Select

A.KIT_ID
A.KIT_PN,

B.KIT_CONT_PN,
B.KIT_CONT_QTY,

C.PN_PRICE,
C.PN_PRICELIST_REV

FROM Table2KIT_PN   A WITH (NOLOCK) 
left JOIN 
Table1KIT_CONT          B WITH (NOLOCK)

ON A.KIT_ID = B.KIT_CONT_ID

left JOIN 
Table3PN_PRICE          C WITH (NOLOCK)

On B.KIT_CONT_PN = C.PN

and B.KIT_CONT_REV = (Select Max(B.KIT_CONT_REV) FROM Table1KIT_CONT D where B.KIT_CONT_REV = D.KIT_CONT_REV )

这根本不起作用,我甚至还没有到只检索最大PN_PRICE的部分。
我已经尝试了在this link中找到的多个版本的查询,但似乎不能将所有这些信息 Package 到我的案例中。
任何帮助都将不胜感激。

sshcrbum

sshcrbum1#

因为你使用了nolock(即使不可分割,我假设你的答案需要MSSQL)。所以,你可以写一些如下:

;with t1cont as (
  select 
    *
    ,row_number() over(partition by 
                          kit_cont_id
                          ,kit_cont_pn 
                       order by kit_cont_rev) rn
  from Table1KIT_CONT t1cont
)
select 
  (whatver fields you need)
from t1cont
outer apply (
  select top 1 *
  from Table2KIT_PN    t2kpn
  where t1cont.kit_cont_id = t2kpn.kit_id
  order by kit_cont_rev desc
) t2kpn
outer apply (
  select top 1 *
  from Table3PN_PRICE  t3pnp
  where t1cont.kit_cont_pn = t3pnp.pn
  order by pricelist_rev desc
) t3pnp
where rn=1

我没有测试它,但它应该是好的。调整它为您的需要(字段/过滤器)

相关问题