gpt4 book ai didi

用于隐藏多个字符串并显示具有相同标识符的第一行的 C# SQL 查询

转载 作者:太空狗 更新时间:2023-10-30 01:32:42 25 4
gpt4 key购买 nike

我正在尝试使用 C# 中的数据网格创建一个报告,它将显示多个数据,但如果它们在表中具有相同的值,则会隐藏标识符。

结果应该是这样的

这是我在数据库中获取数据的代码和查询。

//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 函数来获取“上一”行的值。 “上一个”的定义取决于行的顺序,因此您需要能够以有意义的方式对它们进行排序。

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 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36394032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com