我对 SQL Server 比较陌生,所以如果我遗漏了一些明显的东西,请耐心等待。
我有一个表的数据库Retailers
,Wholesalers
和RetailerWholesaler
。
目前,每个零售商可以拥有零个、一个或两个批发商(当然,这可能会在不经意间发生变化!)。我在创建包含 RetailerID、PrimaryWholesalerID 和 SecondaryWholesalerID 列的视图时遇到问题。无论我尝试过什么,我都会在不同的行上使用 Primary/Secondary:
RetailerID | PrimaryWholesalerID | SecondaryWholesalerID
-----------+---------------------+----------------------
100 | 8888 | NULL
100 | NULL | 9999
我想要的是:
RetailerID | PrimaryWholesalerID | SecondaryWholesalerID
-----------+---------------------+----------------------
100 | 8888 | 9999
这是我目前拥有的脚本:
SELECT
r.RetailerID,
CASE WHEN rw.RetailerWholesalerType = 'Primary'
THEN w.WholesalerID END PrimaryWholesalerID
CASE WHEN rw.RetailerWholesalerType = 'Secondary'
THEN w.WholesalerID END SecondaryWholesalerID
FROM
Retailers r
LEFT OUTER JOIN
RetailerWholesaler rw ON r.RetailerID = rw.RetailerID
LEFT OUTER JOIN
Wholesalers w ON rw.WholesalerID = w.WholesalerID
RetailerID
即使没有一级或二级批发商,我仍然想展示。
我正在使用 SQL Server 2017。在此先感谢您提供任何帮助或见解。
您可以通过使用有条件地聚合结果 MAX()
SELECT r.RetailerID,
MAX(CASE WHEN rw.RetailerWholesalerType = 'Primary'
THEN w.WholesalerID END) PrimaryWholesalerID
MAX(CASE WHEN rw.RetailerWholesalerType = 'Secondary'
THEN w.WholesalerID END) SecondaryWholesalerID
FROM Retailers r
LEFT OUTER JOIN RetailerWholesaler rw
ON r.RetailerID = rw.RetailerID
LEFT OUTER JOIN Wholesalers w
ON rw.WholesalerID = w.WholesalerID
GROUP BY r.RetailerID
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句