public List<DataContract.ClinicInCharge.Records_Moneys> Querydgvlist(string months)//
{
string sql = string.Empty, err = string.Empty;
DataTable dt = new DataTable();
sql = string.Format(@"
SELECT a.months, b.dept_code ,b.dept_name ,
c.user_code , isnull(c.user_name,username) as user_name,a.moneys,e.tax
,a.userid,a.deptid,a.id,a.RecordUser,a.RecordTime,a.iscw,a.isExtra
FROM {0} a
inner join {1} b on a.deptid=b.deptid
left outer join {2} c on c.userid=a.userid
left join RecordsMoneys_Add d on a.id =d.MoneyId
left join RecordMoney_tax e on a.userid=e.userid
where a.months='{3}'
order by a.months
", TableName, Tables.tbDeptList, Tables.tbuser, months);
dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);
List<DataContract.ClinicInCharge.public_dataselect> itemNameselects =
ThisHQ.Base.Base.取基础数据列表s(DataContract.Enums.DataSelect.奖金分类.ToString());
DataTable dtCover = DataConverter.FillDataTable(itemNameselects.ToList());
//for (int a = 0; a < dt.Rows.Count; a++)
//{
// int id = DataConverter.ToInt(dt.Rows[a]["userid"]);
if (dtCover.Rows.Count > 0)
{
for (int i = 0; i < dtCover.Rows.Count; i++)
{
string itemName1 = dtCover.Rows[i]["colvalue"].ToString();
dt.Columns.Add(itemName1, Type.GetType("System.String"));
//decimal Moneys = QueryMoneys(id, itemName1, 0);
}
}
//}
if (err.Length > 0)
{
throw new Exception(err);
}
return DataConverter.DataTableToIList<DataContract.ClinicInCharge.Records_Moneys>(dt).ToList();
}
6 个解决方案
#1
你先学习一下主外键关联。
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表
left join 奖金类型表
这样的形式
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表
left join 奖金类型表
这样的形式
#2
SELECT *
FROM ( SELECT *
FROM Records_Moneys a ,
public_DataSelect f
) t
INNER JOIN public_dept_list b ON t.deptid = b.deptid
LEFT OUTER JOIN public_user_list c ON c.userid = t.userid
LEFT JOIN RecordsMoneys_Add d ON t.id = d.MoneyId
LEFT JOIN RecordMoney_tax e ON t.userid = e.userid
WHERE t.months = '2018-02-01'
AND t.colname = '奖金分类'
ORDER BY t.months
#3
这是贴吧版主大神!
#4
先学习下基本的内联、外联等
#5
设
左图为 DataTable dt
则有
左图为 DataTable dt
则有
var dt2 = new DataTable();
foreach (DataRow tr in dt.Rows)
{
if (!dt2.Columns.Contains((string)tr[0])) dt2.Columns.Add((string)tr[0], tr[1].GetType());
}
var buf = new List<object>();
foreach (DataRow tr in dt.Rows)
{
if (dt2.Columns.IndexOf((string)tr[0]) == 0 && buf.Count > 0)
{
dt2.Rows.Add(buf.ToArray());
buf = new List<object>();
}
buf.Add(tr[1]);
}
dt2.Rows.Add(buf.ToArray());
dataGridView1.DataSource = dt2; //作为有图的数据源
#6
我的建议是你插到数据库中然后关联一把 /你用这种方式 只适用于小数据量 /而且你这样查询出来不便于二次查询和操作 。希望能帮助到你 。
#1
你先学习一下主外键关联。
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表
left join 奖金类型表
这样的形式
你需要设置应发奖金等等的id,然后在另一个表使用这个id。
最后通过
select 列.... from 表
left join 奖金类型表
这样的形式
#2
SELECT *
FROM ( SELECT *
FROM Records_Moneys a ,
public_DataSelect f
) t
INNER JOIN public_dept_list b ON t.deptid = b.deptid
LEFT OUTER JOIN public_user_list c ON c.userid = t.userid
LEFT JOIN RecordsMoneys_Add d ON t.id = d.MoneyId
LEFT JOIN RecordMoney_tax e ON t.userid = e.userid
WHERE t.months = '2018-02-01'
AND t.colname = '奖金分类'
ORDER BY t.months
#3
这是贴吧版主大神!
#4
先学习下基本的内联、外联等
#5
设
左图为 DataTable dt
则有
左图为 DataTable dt
则有
var dt2 = new DataTable();
foreach (DataRow tr in dt.Rows)
{
if (!dt2.Columns.Contains((string)tr[0])) dt2.Columns.Add((string)tr[0], tr[1].GetType());
}
var buf = new List<object>();
foreach (DataRow tr in dt.Rows)
{
if (dt2.Columns.IndexOf((string)tr[0]) == 0 && buf.Count > 0)
{
dt2.Rows.Add(buf.ToArray());
buf = new List<object>();
}
buf.Add(tr[1]);
}
dt2.Rows.Add(buf.ToArray());
dataGridView1.DataSource = dt2; //作为有图的数据源
#6
我的建议是你插到数据库中然后关联一把 /你用这种方式 只适用于小数据量 /而且你这样查询出来不便于二次查询和操作 。希望能帮助到你 。