用于隐藏多个字符串并显示具有相同标识符的第一行的C#SQL查询
作者:互联网
我正在尝试使用C#中的datagrid创建一个报告,它将显示多个数据,但如果它们在表中具有相同的值,则会隐藏标识符.
结果应该是这样的
这是我在数据库中获取数据时的代码和查询.
//Seperated public class
public DataTable ViewDailyRecord(BELReport belreport) {
SqlCommand cmd = new SqlCommand();
cmd.Connection = dbcon.getcon();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM ReportStorageDetails WHERE Date=@Date";
cmd.Parameters.AddWithValue("@Date",belreport.DailyReport);
SqlDataReader dr = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(dr);
return table;
}
// Code inside my form
belreport.DailyReport = Convert.ToDateTime(date_day_Daily.Text).ToString("yyyy-MM-dd");
DataTable table = balreport.ViewDailyRecord(belreport);
dgv_daily.DataSource = table;
先感谢您.
解决方法:
拥有SQL Server Management Studio 2014并不意味着SQL Server的版本是相同的,但无论如何..
在SQL Server 2012中,您可以使用LAG函数来获取“上一个”行的值. “previous”的定义取决于行的顺序,因此您需要能够以有意义的方式对它们进行排序.
SELECT
CASE WHEN ColumnA = LAG(ColumnA) OVER (ORDER BY ColumnA, ColumnB)
THEN '' ELSE ColumnA END AS FinalColumnA
,ColumnB
,CASE WHEN ColumnC = LAG(ColumnC) OVER (ORDER BY ColumnA, ColumnB)
THEN '' ELSE ColumnC END AS FinalColumnC
,ColumnD
FROM ReportStorageDetails
WHERE Date=@Date
ORDER BY ColumnA, ColumnB;
通常,这种后处理是在客户端完成的(使用C#),因为最终用户通常能够按照自己喜欢的方式重新排序行.
标签:c,sql,sql-server,sql-server-2014 来源: https://codeday.me/bug/20190628/1312019.html