数据库DB中有一个表 TB1(A,G,H,I,J) 由于在程序中需要用到一个动态的表TB2,由代码根据需要的数据生成如下表TB2(列标题数目不一定),TB2不和表TB1在同一个数据库中,前者在数据库DB中,后者是由代码生成的,问题是如何能联合 TB1 ,TB2 进行高效SQL查询,新手学习,高手请帮忙!
DataTable dt = new DataTable();
dt.Columns.Add("A");//0
dt.Columns.Add("B");//1
dt.Columns.Add("D");//2
dt.Columns.Add("E");//3
dt.Columns.Add("F");//4
DataRow dr = dt.NewRow();
dr[0]="1";
dr[1]="1";
dr[2]="1";
dr[3]="1";
dt.Rows.Add(dr);
return dt;
DataTable dt = new DataTable();
dt.Columns.Add("A");//0
dt.Columns.Add("B");//1
dt.Columns.Add("D");//2
dt.Columns.Add("E");//3
dt.Columns.Add("F");//4
DataRow dr = dt.NewRow();
dr[0]="1";
dr[1]="1";
dr[2]="1";
dr[3]="1";
dt.Rows.Add(dr);
return dt;
商品 月份 金额
SP1 2011-1 500
SP1 2011-2 1100
SP2 2011-2 1200
需要转换成:
商品 2011-1 2011-2
SP1 500 1100
SP2 0 1200如果是这种需求的话,我之前的做法是用sql进行 行转列,由于这个列是动态变的,所以需要在程序中动态拼凑sql语句,至于sql怎么行转列,我这里就不多说了,网上一搜一大摞
IF @TYPE='0'
BEGIN
SELECT DISTINCT FLOTNO INTO #LOT FROM MPMR A
WHERE NOT EXISTS(SELECT * FROM BP_LOT B WHERE A.FLOTNO=B.IILOT)
ORDER BY 1
INSERT INTO BP_LOT (IILOT, IBU, FUPDATE) SELECT FLOTNO, @IBU, '2' FROM #LOT WHERE FLOTNO<>' '
SELECT IILOT, IBU FROM BP_LOT WHERE FUPDATE='0'
UNION SELECT FLOTNO, @IBU FROM #LOT WHERE FLOTNO<>' '
ORDER BY IILOT
DROP TABLE #LOT
RETURN
END
dt.select("A=1");