steventnorris
steventnorris

Reputation: 5896

Microsoft Access SQL Apply

I am attempting to use the below query in an access environment to no avail. The problem seems to be with the APPLY. However, this runs fine directly on our SQL server..... Help?

SELECT 
    dbo_tblmain.key1, 
    dbo_tblmain.key2, 
    dbo_tblmain.data1, 
    dbo_tblmain.data2, 
    dbo_tblmain.data3, 
    dbo_tblsupp.data1,
    tbloutmade.data1
FROM dbo_tblmain 
LEFT JOIN dbo_tblsupp 
ON (dbo_tblmain.key1 = dbo_tblsupp.key1) AND (dbo_tblmain.key2 = dbo_tblsupp.key2)
OUTER APPLY 
(SELECT TOP 1 * FROM dbo_tbloutside WHERE LEFT(dbo_tblmain.key1,14)=LEFT(dbo_tbloutside.key1,14)) tbloutmade;

sample data

tblmain
key1          key2                data1 data2 data3 
A1234567890   12345678901234AAA   AAA   BBB   CCC   

tblsupp
key1          key2                data1
A1234567890   12345678901234AAA   DDD

tbloutside
key1                 data1
12345678901234AAABB  EEE

Upvotes: 1

Views: 1925

Answers (1)

Fionnuala
Fionnuala

Reputation: 91366

You could try:

SELECT 
    dbo_tblmain.key1, 
    dbo_tblmain.key2, 
    dbo_tblmain.data1, 
    dbo_tblmain.data2, 
    dbo_tblmain.data3, 
    dbo_tblsupp.data1,
    (SELECT TOP 1 Key1 FROM dbo_tbloutside 
     WHERE LEFT(dbo_tblmain.key1,14)=LEFT(dbo_tbloutside.key1,14)) As tbloutmade
FROM dbo_tblmain 
LEFT JOIN dbo_tblsupp 
ON (dbo_tblmain.key1 = dbo_tblsupp.key1) 
AND (dbo_tblmain.key2 = dbo_tblsupp.key2)

Upvotes: 2

Related Questions