我担心2个表AUF_KOPF
是订单标题而AUF_POS
是订单商品。
我想获得订单中订单商品上使用产品的最长日期。产品ID存储在AUF_POS.GLAS1
,AUF_POS.GLAS2
或AUF_POS.GLAS3
。
我创建了此查询,仅检查AUF_POS.GLAS1
:
Select Max(AUF_KOPF.ERFASS_DAT),
AUF_POS.GLAS1
From AUF_KOPF AUF_KOPF
Inner Join AUF_POS AUF_POS On AUF_KOPF.AUF_NR = AUF_POS.AUF_NR
Group By AUF_POS.GLAS1
Order By AUF_POS.GLAS1
结果:
MAX(AUF_KOPF.ERFASS_DAT) GLAS1
07/11/2016 1
06/11/2016 2
03/11/2016 3
09/11/2016 4
07/11/2016 5
问题是,产品ID 1
可能比订单07/11/2016
或AUF_POS.GLAS2
中的其他位置的AUF_POS.GLAS3
更新。
是否可以OR
,或者写这个的最佳方法是什么?我想远离3 SELECT
,然后将它们合并,因为它看起来很混乱。
示例AUF_KOPF
行:
AUF_NR ERFASS_DAT
1609183 06/01/2016
1609184 06/01/2016
1609185 06/01/2016
1609187 06/01/2016
1609188 06/01/2016
示例AUF_POS
行:
AUF_NR AUF_POS GLAS1 GLAS2 GLAS3
1609183 4 4 9 0
1609184 5 4 9 0
1609185 6 4 9 0
1609187 7 4 9 0
1609188 8 4 9 0
此实例中的所需输出会将所有产品显示为06/01/2016
,但如果有更多数据,则会在任何位置显示产品ID的最新日期。
答案 0 :(得分:2)
您可以使用UNION ALL
,这不应该过于复杂(除了较长的代码)
Select Max(AUF_KOPF.ERFASS_DAT),
AUF_POS.GLAS
From AUF_KOPF
Inner Join (SELECT AUF_NR,GLAS1 as glas FROM AUF_POS UNION ALL
SELECT AUF_NR,GLAS2 FROM AUF_POS UNION ALL
SELECT AUF_NR,GLAS3 FROM AUF_POS) AUF_POS
On AUF_KOPF.AUF_NR = AUF_POS.AUF_NR
Group By AUF_POS.GLAS
Order By AUF_POS.GLAS