C# 将两个表中的数据合并到一个表中

C# 将两个表中的数据合并到一个表中,c#,sql-server,datagridview,C#,Sql Server,Datagridview,我有三个DataGridView,如图所示。嗯,我确实有,但不得不把它们移走 Income Received datagridview的SQL选择如下: ("Select I_Stock_Code as 'Stock Code', Income_Date, Dividend_Amount as 'Dividend Income', Franked_Income as 'Franking Credit Income', Option_Income as 'Option Income', Divi

我有三个DataGridView,如图所示。嗯,我确实有,但不得不把它们移走

Income Received datagridview的SQL选择如下:

("Select I_Stock_Code as 'Stock Code', Income_Date, Dividend_Amount as 'Dividend Income',  Franked_Income as 'Franking Credit Income', Option_Income as 'Option Income', Dividend_Amount + Option_Income + Franked_Income  as 'Total Income', Notes from Income order by I_Stock_Code",  JKPLConnection);
("Select B_Stock_Code as 'Stock Code', Buy_Date, Number_Bought as 'Bought',Price as 'Buy Price', Brokerage as '  Brokerage Cost', Total_Cost as 'Investment Cost', Interest_Rate as 'Opportunity Interest Rate %',  Acc_interest as 'Accumulated Interest', (Total_Cost + Acc_Interest)/Number_Bought as 'Breakeven Price'FROM Buy  ORDER BY B_Stock_Code", JKPLConnection);
("SELECT B_Stock_Code as 'Stock Code', COUNT (Number_Bought) as Transactions, SUM (Number_Bought) AS Bought, SUM (Total_Cost)/SUM (Number_Bought) AS  'Average Buy Price', SUM (Total_Cost) AS 'Total Investment', SUM (ACC_Interest) AS 'Opportunity Interest Cost', (SUM (Total_Cost) + SUM(ACC_Interest))/SUM (Number_Bought) AS 'Breakeven Price' FROM buy GROUP BY B_Stock_Code", JKPLConnection);
详细投资datagridview的SQL选择如下:

("Select I_Stock_Code as 'Stock Code', Income_Date, Dividend_Amount as 'Dividend Income',  Franked_Income as 'Franking Credit Income', Option_Income as 'Option Income', Dividend_Amount + Option_Income + Franked_Income  as 'Total Income', Notes from Income order by I_Stock_Code",  JKPLConnection);
("Select B_Stock_Code as 'Stock Code', Buy_Date, Number_Bought as 'Bought',Price as 'Buy Price', Brokerage as '  Brokerage Cost', Total_Cost as 'Investment Cost', Interest_Rate as 'Opportunity Interest Rate %',  Acc_interest as 'Accumulated Interest', (Total_Cost + Acc_Interest)/Number_Bought as 'Breakeven Price'FROM Buy  ORDER BY B_Stock_Code", JKPLConnection);
("SELECT B_Stock_Code as 'Stock Code', COUNT (Number_Bought) as Transactions, SUM (Number_Bought) AS Bought, SUM (Total_Cost)/SUM (Number_Bought) AS  'Average Buy Price', SUM (Total_Cost) AS 'Total Investment', SUM (ACC_Interest) AS 'Opportunity Interest Cost', (SUM (Total_Cost) + SUM(ACC_Interest))/SUM (Number_Bought) AS 'Breakeven Price' FROM buy GROUP BY B_Stock_Code", JKPLConnection);
合并投资datagridview的SQL选择如下:

("Select I_Stock_Code as 'Stock Code', Income_Date, Dividend_Amount as 'Dividend Income',  Franked_Income as 'Franking Credit Income', Option_Income as 'Option Income', Dividend_Amount + Option_Income + Franked_Income  as 'Total Income', Notes from Income order by I_Stock_Code",  JKPLConnection);
("Select B_Stock_Code as 'Stock Code', Buy_Date, Number_Bought as 'Bought',Price as 'Buy Price', Brokerage as '  Brokerage Cost', Total_Cost as 'Investment Cost', Interest_Rate as 'Opportunity Interest Rate %',  Acc_interest as 'Accumulated Interest', (Total_Cost + Acc_Interest)/Number_Bought as 'Breakeven Price'FROM Buy  ORDER BY B_Stock_Code", JKPLConnection);
("SELECT B_Stock_Code as 'Stock Code', COUNT (Number_Bought) as Transactions, SUM (Number_Bought) AS Bought, SUM (Total_Cost)/SUM (Number_Bought) AS  'Average Buy Price', SUM (Total_Cost) AS 'Total Investment', SUM (ACC_Interest) AS 'Opportunity Interest Cost', (SUM (Total_Cost) + SUM(ACC_Interest))/SUM (Number_Bought) AS 'Breakeven Price' FROM buy GROUP BY B_Stock_Code", JKPLConnection);
到目前为止,我对此感到高兴。我的问题是,我想在ConsolidatedInvestmentDataGridView中加入一列,显示每项投资产生的收入

为了测试我的SQL命令,我使用了一个单独的程序来测试这些语句,然后尝试将它们集成到生成三个DataGridView的程序中。SQL Tester图像显示了我的最大努力。从中可以看出,为必和必拓购买的数字是一次又一次重复的;显示收入的第1栏提供了完全错误的数字![SQL Tester][4] 我完全不知道有什么解决办法。这是生成视图的代码

SELECT 
    Buy.B_Stock_Code AS StockCode,  
    SUM(buy.Number_Bought) AS NumberBought,
    SUM(Buy.Total_Cost) AS TotalCost, 
    SUM(Buy.Acc_Interest + Buy.Total_Cost) AS TotalInvestment, 
    SUM(Income.Option_Income + Income.Franked_Income + Income.Option_Income)
FROM 
    Buy
FULL OUTER JOIN 
    Income ON Buy.B_Stock_Code = Income.I_Stock_Code
GROUP BY 
    Buy.B_Stock_Code, Income.Incomeid
ORDER BY 
    B_Stock_Code

我正在Windows桌面上使用C#Microsoft Visual Studio Express 2013。我希望这不是太多的信息,但更重要的是,它清楚地表达了我的问题。我不得不删除这些图片,因为我不能上传它们。如果有人能解释这一点,并且上面的信息还不够,我很乐意通过电子邮件发送这些图像。

您可以使用编辑器中的“代码”按钮
{}
来格式化代码块,如sql查询。欢迎使用stackoverflow。请阅读。提示:使用适当的代码格式使您的问题可读。您能否在您的问题中也提供您预期的结果?您能否将您的图像上传到fliker上并提及您问题中的链接?非常感谢您的反馈。此后,我发现该错误是由于在SQL联接查询中使用与行求和相关的“GROUPBY”引起的。因为我希望现在能够更好地解释这一点,并希望使用正确的格式,所以我添加了一篇新文章。