当前位置:编程学习 > C#/ASP.NET >>

C# 编程,遇到关于SQL数据库查询问题,请大家帮忙

数据库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; --------------------编程问答-------------------- 一定要用SQL的话需要先把TB2传到数据库里建成临时表,然后在进行表联接查询。 --------------------编程问答-------------------- Union --------------------编程问答-------------------- 楼主是不是需要对查询出来的数据进行行转列?之前做报表查询时也遇到过类似问题,比如查商品每月销售额,数据库查出来的结构是:
商品   月份    金额
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怎么行转列,我这里就不多说了,网上一搜一大摞

--------------------编程问答-------------------- 这个貌似不难吧,当然你如果单纯的用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 --------------------编程问答-------------------- 先两个table 合并,再用以下方法查询。
dt.select("A=1");
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,