我正在使用此视频尝试填充a的结果DataGridView,并收到上述错误.下面的代码与此错误有关 - 我将值传递给存储过程,然后最终SELECT返回表中的值DataGridView.
SqlConnection con = new SqlConnection();
con.ConnectionString = "integrated security=SSPI;data source=SERV;" + "persist security info=False;initial catalog=DB";
con.Open();
SqlCommand select = new SqlCommand("SELECT * FROM Table");
SqlCommand enter = new SqlCommand("sp_Proc", con);
// Stored Procedure
enter.CommandType = CommandType.StoredProcedure;
enter.Parameters.Add(new SqlParameter("@vvalue", SqlDbType.VarChar)).Value = Convert.ToString(txt1.Text);
enter.Parameters.Add(new SqlParameter("@dvalue", SqlDbType.Decimal)).Value = Convert.ToDecimal(txt2.Text);
enter.ExecuteNonQuery();
// DataGrid returns the SELECT
SqlDataAdapter sadapt = new SqlDataAdapter(select);
sadapt.SelectCommand = select;
DataTable dtab = new DataTable();
sadapt.Fill(dtab); // generates the …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试获取任何一年的第一天和最后一天。我有 1950 年的数据,我想获取数据集中该年的第一天到该数据集中该年的最后一天(请注意,该年的最后一天可能不是 12 月 31 日,与 12 月 31 日相同)那一年)。
最初我认为我可以使用 aCTE并调用DATEPART一年中的某一天选择,但这不会正确分区。我还尝试了CTE自连接,但由于一年中的最后一天或第一天可能不同,这也会产生不准确的结果。
例如,使用下面的代码实际上会生成一些MINs MAX,反之亦然,尽管理论上它应该只获取MAX年份的日期和MIN年份的日期:
;WITH CT AS(
SELECT Points
, Date
, DATEPART(DY,Date) DA
FROM Table
WHERE DATEPART(DY,Date) BETWEEN 363 AND 366
OR DATEPART(DY,Date) BETWEEN 1 AND 3
)
SELECT MIN(c.Date) MinYear
, MAX(c.Date) MaxYear
FROM CT c
GROUP BY YEAR(c.Date)
Run Code Online (Sandbox Code Playgroud)