Self-join field addition

S

Stephanie

Hi. I'm frustrated! I can't figure out why this won't work. Must be user
error! Here's the setup: both Contacts and SignificantOthers (these spouses
are themselves Contacts, hence the self join) can earn, use and lose bucks.
Ultimately, I'm trying to calculate how many bucks are avialable from Contact
and Spouse together. Here's what I have:
[BucksEarned]+[BucksUsed]+[BucksLost]=BucksAvailable and this part works.

[SpouseBucksEarned]+[SpouseBucksUsed]+[SpouseBucksLost]=SpouseBucksAvailabe
does NOT work. Say I have 18-3-4=11 then SpouseBucksAvailable should be 11.

However, rather than adding together, all 3 numbers show up in one query
column: 18-3-4
I want to be able to add this SpouseBucksAvailable column (that should be
11) to the BucksAvailable column to get a total. (really, these 3 step
queries kill me!)

Here's my query- I'd appreciate suggestions. Thanks.

SELECT AllBucksByContactSumTotal.ContactID,
AllBucksByContactSumTotal.BucksEarned AS BucksEarned,
AllBucksByContactSumTotal.BucksUsed AS BucksUsed,
AllBucksByContactSumTotal.BucksLost AS BucksLost,
[BucksEarned]+[BucksUsed]+[BucksLost] AS BucksAvailable,
AllBucksByContactSumTotal.SignificantOtherID,
nz([AllBucksBySpouse].[BucksEarned],0) AS SpouseBucksEarned,
nz([AllBucksBySpouse].[BucksUsed],0) AS SpouseBucksUsed,
nz([AllBucksBySpouse].[BucksLost],0) AS SpouseBucksLost
FROM AllBucksByContactSumTotal LEFT JOIN AllBucksByContactSumTotal AS
AllBucksBySpouse ON AllBucksByContactSumTotal.SignificantOtherID =
AllBucksBySpouse.ContactID
WHERE (((AllBucksByContactSumTotal.SignificantOtherID)<>0) AND
((AllBucksByContactSumTotal.PrimaryFamilyMember)=True)) OR
(((AllBucksByContactSumTotal.SignificantOtherID)=0));
 
J

John Spencer

Evidently, your spousebucks fields are being treated as text strings vice
numbers. The culprit is probably the NZ function. Try Wrapping the NZ()
inside of CCUR.

CCUR(nz([AllBucksBySpouse].[BucksEarned],0)) AS SpouseBucksEarned

Repeat on the other columns (fields).
 
S

Stephanie

You are fabulous! That did the trick. Thanks for the help.

John Spencer said:
Evidently, your spousebucks fields are being treated as text strings vice
numbers. The culprit is probably the NZ function. Try Wrapping the NZ()
inside of CCUR.

CCUR(nz([AllBucksBySpouse].[BucksEarned],0)) AS SpouseBucksEarned

Repeat on the other columns (fields).


Stephanie said:
Hi. I'm frustrated! I can't figure out why this won't work. Must be
user
error! Here's the setup: both Contacts and SignificantOthers (these
spouses
are themselves Contacts, hence the self join) can earn, use and lose
bucks.
Ultimately, I'm trying to calculate how many bucks are avialable from
Contact
and Spouse together. Here's what I have:
[BucksEarned]+[BucksUsed]+[BucksLost]=BucksAvailable and this part
works.

[SpouseBucksEarned]+[SpouseBucksUsed]+[SpouseBucksLost]=SpouseBucksAvailabe
does NOT work. Say I have 18-3-4=11 then SpouseBucksAvailable should be
11.

However, rather than adding together, all 3 numbers show up in one query
column: 18-3-4
I want to be able to add this SpouseBucksAvailable column (that should be
11) to the BucksAvailable column to get a total. (really, these 3 step
queries kill me!)

Here's my query- I'd appreciate suggestions. Thanks.

SELECT AllBucksByContactSumTotal.ContactID,
AllBucksByContactSumTotal.BucksEarned AS BucksEarned,
AllBucksByContactSumTotal.BucksUsed AS BucksUsed,
AllBucksByContactSumTotal.BucksLost AS BucksLost,
[BucksEarned]+[BucksUsed]+[BucksLost] AS BucksAvailable,
AllBucksByContactSumTotal.SignificantOtherID,
nz([AllBucksBySpouse].[BucksEarned],0) AS SpouseBucksEarned,
nz([AllBucksBySpouse].[BucksUsed],0) AS SpouseBucksUsed,
nz([AllBucksBySpouse].[BucksLost],0) AS SpouseBucksLost
FROM AllBucksByContactSumTotal LEFT JOIN AllBucksByContactSumTotal AS
AllBucksBySpouse ON AllBucksByContactSumTotal.SignificantOtherID =
AllBucksBySpouse.ContactID
WHERE (((AllBucksByContactSumTotal.SignificantOtherID)<>0) AND
((AllBucksByContactSumTotal.PrimaryFamilyMember)=True)) OR
(((AllBucksByContactSumTotal.SignificantOtherID)=0));
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top