Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
SQL Statement Help
Message
 
 
To
20/05/2013 15:21:42
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows 7
Network:
Windows 2008 Server
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01574323
Message ID:
01574325
Views:
72
This message has been marked as a message which has helped to the initial question of the thread.
>I have three tables set up as follows:
>
>
>CallReports Table
>
> CallReport_Id        etc...
>1
>2
>3
>
>
>
>CallReport_Users Table
>
>CallReport_Id         UserId
>1                             A
>2                             A
>2                             B
>2                             C
>3                             C
>
>
>CallReport_Companys Table
>
>CallReport_id         Company_id
>1                                G
>1                                H
>2                                M
>3                                K
>
>
>I would like a single cursor/table that shows a single line for each callreport_id and either the userid, if a single entry, or the word 'Multiple,' if there are multiple userids for a callreport_id. The same for the company_id. For example:
>
>
>CallReport_id                 UserId                          Company_id
>1                                   A                                 'Multiple'
>2                                  'Multiple'                        M
>3                                  C                                  'Multiple'
>
>
>Can someone provide some guidance on how to accomplish this?
>
>Thanks in advance,
>Russell
Select R.*, case when U.cntUsers > 1 then 'Multiple' else UserID end as UserId,
 case when C.cntCompanies>1 then 'Multiple' else Company_id end as Company_id
from CallReports R
LEFT JOIN (select CallReport_id, min(UserId) as UserId, count(UserID) as cntUsers 
FROM  CallReport_Users GROUP BY CallReport_ID) U
ON R.CallReport_id = U.CallReport_Id
LEFT JOIN (select CallReport_id, min(Company_Id) as Company_Id, count(Company_ID) as cntCompanies 
FROM  CallReport_Companys GROUP BY CallReport_ID) C
ON R.CallReport_id = C.CallReport_Id
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform