【发布时间】:2021-08-18 08:17:45
【问题描述】:
由于某种原因,当涉及到 R 时,我只返回一行,而在 SQL Server 中,我返回了正确的行数。 SQLDF:
CustomerCodingChangesT <- sqldf("
SELECT c.CustID as ID
, c.ReverseSupplier as Supplier
, c.ReverseCustomerCode as Code
, c.Name
, c.Address
, c.[From PostCode]
, c.[From Outlet]
, c.[From OutletName]
, o.FullAddress AS [From Address]
, c.[To PostCode]
, c.[To Outlet]
, c.[To OutletName]
, o1.FullAddress AS [To Address]
, MAX(CAST(c.TotalUnits AS VARCHAR)) AS [Total Units]
, '$'+MAX(CAST(c.TotalValue AS VARCHAR)) AS [Total Value]
, '' AS Checked
, c.CustRecActive as Active
FROM CustomerCorrectionSummaryT AS c
LEFT JOIN OutletMasterT AS o
ON c.[From PostCode] = o.Postcode
AND c.[From Outlet] = o.Outlet
LEFT JOIN OutletMasterT AS o1
ON c.[To PostCode] = o1.Postcode
AND c.[To Outlet] = o1.Outlet
ORDER BY c.totalvalue DESC;")
SQL:
if object_id ('tempdb..#CustomerCodingChanges') is not null drop table #CustomerCodingChanges
SELECT c.CustID as ID
, c.ReverseSupplier as Supplier
, c.ReverseCustomerCode as Code
, c.Name
, c.Address
, c.[From Postcode]
, c.[From Outlet]
, c.[From OutletName]
, o.FullAddress AS [From Address]
, c.[To Postcode]
, c.[To Outlet]
, c.[To OutletName]
, o1.FullAddress AS [To Address]
, CAST(c.TotalUnits AS VARCHAR(MAX)) AS [Total Units]
, '$'+CAST(c.TotalValue AS VARCHAR(MAX)) AS [Total Value]
, '' AS Checked
, c.CustRecActive as Active
INTO #CustomerCodingChanges
FROM #CustomerCorrectionSummary AS c
LEFT JOIN ndf_061.IRGMaster.dbo.OutletMaster AS o
ON c.[From Postcode] = o.postcode
AND c.[From Outlet] = o.outlet
LEFT JOIN ndf_061.IRGMaster.dbo.OutletMaster AS o1
ON c.[To Postcode] = o1.postcode
AND c.[To Outlet] = o1.outlet
ORDER BY c.totalvalue DESC;
CustomerCorrectionSummaryT 和 OutletMasterT 的两个数据框在 R 和 SQL Server 中具有相同数量的结果,所以我不知道为什么它不会在 R 和 SQL Server 中显示相同数量的结果。在 SQL Server 查询中返回 22 行,而在 R 中我只得到一个都正确的行。 R 的 sqldf 并没有显示全部。我认为这与我的 left join 函数有关,但我真的不知道。如果您需要更多信息,请告诉我!
【问题讨论】: