我正在开发c#应用程序。 我正在使用OLEDB连接。
我有以下两个表>>
付款
AdmissionNumber | StudName |
1 John
2 Smith
paymentDetails
AdmissionNumber | RemainingFee | Date | Payment
1 5000 10/10/2012 3000
1 3000 10/11/2012 2000
2 4000 15/11/2012 3000
1 1000 10/12/2012 2000
在此我想获得表结果如下>>
AdmissionNumber | Name | Date |RemainingPayment|Payment|
1 John 10/12/2012 1000 2000
在这种情况下,已经通过textbox和datetimepicker在表单中提供了入场号和日期。
答案 0 :(得分:2)
在这种情况下,表格中已经提供了入场号码和日期 通过textbox和datetimepicker。
因此,您想要搜索特定的入学号码和日期。如果是这样,那么试试这个:
SELECT
p.AdmissionNumber,
p.Name,
pd.Date,
pd.RemaingFee AS RemainingPayment,
pd.Payment
FROM Payment p
INNER JOIN PaymentDetails pd ON p.AdmissionNumber = pd.AdmissionNumber
WHERE p.AdmissionNumber = @AdmissionNumberParamFromTxtBox
AND pd.Date = @DateParamFromTheotherTextBox;
答案 1 :(得分:1)
这将为您提供准确的结果。主数据和最后一条详细记录之间的匹配。您应该在详细信息中有一个主键列。
Select *
From Payment
Left Outer Join
PaymentDetail
On PaymentDetail.Id = (
Select Top 1
A.Id
From PaymentDetail As A
Where A.AdmissionNumber = Payment.AdmissionNumber
Order By A.Date Desc
)
干杯
答案 2 :(得分:0)
SELECT
p.AdmissionNumber,
p.Name,
MAX(pd.Date) AS Date,
pd.RemaingFee AS RemainingPayment,
pd.Payment
FROM Payment p
INNER JOIN PaymentDetails pd ON p.AdmissionNumber = pd.AdmissionNumber
GROUP BY p.AdmissionNumber,pd.Payment,p.Name,pd.RemaingFee