SQL语句以区分结果并在其他列中添加数据

时间:2015-08-24 15:08:51

标签: sql sql-server vb.net

瘦我是有一个程序(用VB.NET编写),它将数据写入SQL Server数据库。我知道编写语句来访问该数据并将其呈现给用户。

我遇到的问题是我设置了DataGridView,第一列是用户支付的帐单清单。我用

SELECT DISTINCT [PayTo] 
FROM Main_Bills

填充此列并且它可以正常工作。

下一列是每月,然后是最后一列是迄今为止的总付款。我不知道如何填充剩余的列并让它们显示即使它们是空的。我想要完成的是:

  1. 显示所有列,即使它们不包含数据。
  2. 在数据库中搜索当月支付的每张帐单,并将其与相应的帐单相加。
  3. 使用当年每个帐单的总付款更新最后一列。
  4. 示例,如果数据库包含:

    Bill Paid To       Date     Amount
    ----------------------------------
    Electric Company   8/20/15  100.00
    Electric Company   8/21/15  50.00
    Water Company      8/15/15  25.00
    

    因此,目前的设置仅在第一栏中显示电气公司一次,这是我想要的水公司。我需要做的是基于年份(这样它只显示当年支付的账单)。我需要它将2个电力支付加在一起,并在8月专栏中显示电气公司项目在第1列。然后与水相同。显然,还有更多的账单将在系统中。

    我希望这一切都有道理。代码部分如下:

    Sub SummaryTab_Fill()
    Try
    con = New SqlConnection(conString)
    cmd = New SqlCommand("SELECT DISTINCT [PayTo] FROM Main_Bills", con)
    con.Open()
    reader = cmd.ExecuteReader()
    table = New DataTable
    table.Load(reader)
    DGVBillSum.AutoGenerateColumns = True
    DGVBillSum.RowHeadersVisible = False
    DGVBillSum.DataSource = table
    DGVBillSum.ColumnCount = 14
    DGVBillSum.Columns(0).Name = "Paid To"
    DGVBillSum.Columns(1).Name = "January"
    DGVBillSum.Columns(2).Name = "February"
    DGVBillSum.Columns(3).Name = "March"
    DGVBillSum.Columns(4).Name = "April"
    DGVBillSum.Columns(5).Name = "May"
    DGVBillSum.Columns(6).Name = "June"
    DGVBillSum.Columns(7).Name = "July"
    DGVBillSum.Columns(8).Name = "August"
    DGVBillSum.Columns(9).Name = "September"
    DGVBillSum.Columns(10).Name = "October"
    DGVBillSum.Columns(11).Name = "November"
    DGVBillSum.Columns(12).Name = "December"
    DGVBillSum.Columns(13).Name = "Total"
    DGVBillSum.Sort(DGVBillSum.Columns(0), ComponentModel.ListSortDirection.Ascending)
    DGVBillSum.Refresh()
    con.Close()
    Catch ex As Exception
     'I need to add my catch statement
    End Try
    

1 个答案:

答案 0 :(得分:0)

我建议您从当前年份获取所有记录并将其汇总到一个函数中。

var promise = Promise.fromNode(function (callback) {
  FB.api(url, function(response) { callback(response ? response.error : "no response", response); });
});