Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在SQL中将行转换为列?_Asp.net_Sql - Fatal编程技术网

Asp.net 如何在SQL中将行转换为列?

Asp.net 如何在SQL中将行转换为列?,asp.net,sql,Asp.net,Sql,实际上,我有一个查询,它在一行中为每一行返回5列和值(日期),但我想要的是列名称应该在一列标题中,其(Vale)应该在日期的第二列中 注意Title和Date是我刚刚在运行时创建的临时表的列 这是我正在使用的一段代码 protected void btnAlerts_Click(object sender, EventArgs e) { fnSaveAlerts(); } private void fnSaveAlerts() { DataTable dtTemp = n

实际上,我有一个查询,它在一行中为每一行返回5列和值(日期),但我想要的是列名称应该在一列
标题
中,其(Vale)应该在
日期
的第二列中

注意
Title
Date
是我刚刚在运行时创建的临时表的列

这是我正在使用的一段代码

protected void btnAlerts_Click(object sender, EventArgs e)
{
       fnSaveAlerts();
}

private void fnSaveAlerts()
{
    DataTable dtTemp = new DataTable();

    DataColumn dtC1 = new DataColumn();
    dtC1.DataType = typeof(String);
    dtC1.ColumnName = "Title";

    DataColumn dtc2 = new DataColumn();
    dtc2.DataType = typeof(DateTime);
    dtC1.ColumnName = "Date";

    dtTemp.Columns.Add(dtC1);
    dtTemp.Columns.Add(dtc2);

    LeadsContracts ObjLeadsContract = new LeadsContracts();

    ObjLeadsContract.ExecuteSql(@"select dtDisclosure, dtDueDiligence, 
                                         dtFinanceAppraisals, dtFreeTextDate1, 
                                         dtFreeTextDate2 
                                  from LeadsContracts 
                                  where dtDisclosure is not null 
                                    and dtDueDiligence is not null 
                                    and dtFinanceAppraisals is not null 
                                    and dtFreeTextDate1 is not null 
                                    and dtFreeTextDate2 is not null");

    dtTemp.DataSet = ObjLeadsContract.DefaultView;  // it also gives error here "Red line"

}

我已经花了一整天的时间来做这件事,请任何人都能帮助我。提前感谢

我将为您提供解决方案提示:
对于您的问题,可以使用二维数组

[0][“标题”,数据库值]
[1] [“日期”,数据库值]
[2] [
[3] [
[4] [

因此,首先循环查询的五个值并填充到二维数组中

[0][1]
[1] [1]
[2] [1]
[3] [1]
[4] [1]


然后,您可以在二维数组上循环以获得输出…

您是否期望这样的结果

DECLARE @Temp AS TABLE (dtDisclosure varchar(20),dtDueDiligence varchar(20),dtFinanceAppraisals varchar(20),dtFreeTextDate1 varchar(20),dtFreeTextDate2 varchar(20))
INSERT INTO @Temp VALUES ('20-Apr-2013','20-Apr-2013','20-Apr-2013','20-Apr-2013','20-Apr-2013'),
                        ('21-Apr-2013','21-Apr-2013','21-Apr-2013','21-Apr-2013','21-Apr-2013')

SELECT [Title],[Date] FROM
(
   SELECT * FROM @temp
} A
UNPIVOT
{
    [Date] FOR [Title] IN     IN ([dtDisclosure],[dtDueDiligence],[dtFinanceAppraisals],[dtFreeTextDate1],[dtFreeTextDate2])
} AS Unpvt;
输出:

Title                 Date
dtDisclosure          20-Apr-2013
dtDueDiligence        20-Apr-2013
dtFinanceAppraisals   20-Apr-2013
dtFreeTextDate1       20-Apr-2013
dtFreeTextDate2       20-Apr-2013
dtDisclosure          21-Apr-2013
dtDueDiligence        21-Apr-2013
dtFinanceAppraisals   21-Apr-2013
dtFreeTextDate1       21-Apr-2013
dtFreeTextDate2       21-Apr-2013

这很好,但如果我们不知道日期,我的意思是,如果v有多行或多条记录,它将如何工作?检查这个…如果这是您想要的…行到列转换。。。。。。。。。