Asmx代码:
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
HBPivot_cs thpivot = new HBPivot_cs();
thpivot.EMPLOYEEID = rdr["EMPLOYEEID"].ToString();
thpivot.FIRSTDATE = rdr["06/26/2018"].ToString();
thpivot.SECONDDATE = rdr["06/27/2018"].ToString();
listhbpivot.Add(thpivot);
}
con.Close();
我的数据: 此数据来自Pivot
EMPLOYEEID 06/26/2018 06/27/2018 06/28/2018 06/29/2018
1 07:00 AM 08:00 AM 07:30 AM 10:00 AM
2 07:01 AM 08:20 AM 07:10 AM 06:00 AM
字段名是动态的...我如何使用rdr.read检索它 谢谢
答案 0 :(得分:0)
在您的sql服务器数据库中创建以下存储过程。
create procedure dbo.EmploeeDynamicPivot
as
begin
set nocount on;
declare
@columns as nvarchar(max),
@query as nvarchar(max)
select
@columns =
stuff
((
select
distinct
',' + quotename([your_date_column])
from
[your_table]
for xml path(''), type
).value('.', 'nvarchar(max)'), 1, 1, '')
set @query =
'select
EMPLOYEEID, ' + @columns + '
from
(
select
EMPLOYEEID ,
[your_date_column] ,
[your_value_column]
from
[your_table]
)
sourceTable
pivot
(
sum([your_value_column])
for [your_date_column] in (' + @columns + ')
)
pivotTable'
execute(@query);
set nocount off;
end
通过以下代码编辑c#代码。
var sqlConnection = new SqlConnection([your_connection_string]);
sqlConnection.Open();
var sqlCommand = sqlConnection.CreateCommand();
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.CommandText = "EmploeeDynamicPivot";
var rdr = sqlCommand.ExecuteReader();
while (rdr.Read())
{
for (int i = 0; i < rdr.FieldCount; i++)
{
var value = rdr.GetString(i);
or
var value = rdr.GetValue(i);
//do something...
}
}
...