62,271
社区成员
发帖
与我相关
我的任务
分享
--创建函数实现code的合并
create function dbo.f_str(@ITEM_CODE varchar(20),@des varchar(20) ,@date_num int, @dt datetime)
returns varchar(1000)
as
begin
declare @str varchar(1000)
select @str = isnull(@str + ',' , '') + cast(code as varchar) from
(
select distinct t1.* , t3.CODE from
(
SELECT m.ITEM_CODE,m.DES,sum(m.TO_BE_FLLW) TO_BE_FLLW ,case when datediff
(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end date_num FROM
[VIEW_DS_MOTime] m group by m.ITEM_CODE,m.DES,case when datediff(week,@dt,m.date_start) + 1 <= 0
then 0 else datediff(week,@dt,m.date_start) + 1 end
) t1,VIEW_DS_MOTime t2, VIEW_SO_LN1 t3
where t1.ITEM_CODE = t2.ITEM_CODE and t2.SO_NUMBER = t3.INVOICE
and (case when datediff(week,@dt,t2.date_start) + 1 <= 0 then 0 else datediff
(week,@dt,t2.date_start) + 1 end) = t1.date_num
) o
where ITEM_CODE = @ITEM_CODE and des = @des and date_num = @date_num
return @str
end
go
--定义日期以决定当周
declare @dt as datetime
set @dt = '2010-11-06'
select ITEM_CODE,des,
max(case date_num when 0 then ltrim(to_be_fllw) else '' end) [0wk],
max(case date_num when 0 then code else '' end) [0wk需求成品],
max(case date_num when 1 then ltrim(to_be_fllw) else '' end) [1wk],
max(case date_num when 1 then code else '' end) [1wk需求成品],
max(case date_num when 2 then ltrim(to_be_fllw) else '' end) [2wk],
max(case date_num when 2 then code else '' end) [2wk需求成品],
max(case date_num when 3 then ltrim(to_be_fllw) else '' end) [3wk],
max(case date_num when 3 then code else '' end) [3wk需求成品],
max(case date_num when 4 then ltrim(to_be_fllw) else '' end) [4wk],
max(case date_num when 4 then code else '' end) [4wk需求成品],
max(case date_num when 5 then ltrim(to_be_fllw) else '' end) [5wk],
max(case date_num when 5 then code else '' end) [5wk需求成品],
max(case date_num when 6 then ltrim(to_be_fllw) else '' end) [6wk],
max(case date_num when 6 then code else '' end) [6wk需求成品],
max(case date_num when 7 then ltrim(to_be_fllw) else '' end) [7wk],
max(case date_num when 7 then code else '' end) [7wk需求成品],
max(case date_num when 8 then ltrim(to_be_fllw) else '' end) [8wk],
max(case date_num when 8 then code else '' end) [8wk需求成品],
max(case date_num when 9 then ltrim(to_be_fllw) else '' end) [9wk],
max(case date_num when 9 then code else '' end) [9wk需求成品],
max(case date_num when 10 then ltrim(to_be_fllw) else '' end) [10wk],
max(case date_num when 10 then code else '' end) [10wk需求成品],
max(case date_num when 11 then ltrim(to_be_fllw) else '' end) [11wk],
max(case date_num when 11 then code else '' end) [11wk需求成品],
max(case date_num when 12 then ltrim(to_be_fllw) else '' end) [12wk],
max(case date_num when 12 then code else '' end) [12wk需求成品]
from
(
select ITEM_CODE , des , date_num , max(to_be_fllw) to_be_fllw, code = dbo.f_str(ITEM_CODE , des ,
date_num,@dt) from
(
select distinct t1.* , t3.CODE from
(
SELECT m.ITEM_CODE,m.DES,sum(m.TO_BE_FLLW) TO_BE_FLLW ,case when datediff(week,@dt,m.date_start) +
1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end date_num FROM [VIEW_DS_MOTime] m group
by m.ITEM_CODE,m.DES,case when datediff(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff
(week,@dt,m.date_start) + 1 end
) t1,VIEW_DS_MOTime t2, VIEW_SO_LN1 t3
where t1.ITEM_CODE = t2.ITEM_CODE and t2.SO_NUMBER = t3.INVOICE
and (case when datediff(week,@dt,t2.date_start) + 1 <= 0 then 0 else datediff
(week,@dt,t2.date_start) + 1 end) = t1.date_num
) o
group by ITEM_CODE , des , date_num
) k
group by ITEM_CODE,des
这部分的东西都不见了
private void FileNo()
{
string ConnectionOledb = System.Configuration.ConfigurationManager.AppSettings["ConStringOledb"];
OleDbConnection conn = new OleDbConnection(ConnectionOledb);
string strSql = "f_str"; //自定SQL函數
OleDbCommand cmd = new OleDbCommand(strSql, conn);
cmd.CommandType = CommandType.StoredProcedure;
//cmd.Parameters.Add("@Str", OleDbType.VarChar).Value = "ZQ3"; //輸入參數
cmd.Parameters.Add("@ITEM_CODE", OleDbType.VarChar).Value = ""; //輸入參數
cmd.Parameters.Add("@des", OleDbType.VarChar).Value = ""; //輸入參數
cmd.Parameters.Add("@date_num", OleDbType.Integer).Value = 0; //輸入參數
cmd.Parameters.Add("@dt", OleDbType.DBDate).Value = System.DateTime.Now.ToShortDateString(); //輸入參數
cmd.Parameters.Add("@returnString", OleDbType.VarChar);
cmd.Parameters["@returnString"].Direction = ParameterDirection.ReturnValue; //返回參數
try
{
conn.Open();
object o = cmd.ExecuteScalar();
//this.txtAFileNO.Text = cmd.Parameters["@returnString"].Value.ToString();
//Response.Write("");
string strq = cmd.Parameters["@returnString"].Value.ToString();
DataSet ds = Base.GetDataSet(strq,"ds");
GridView1.DataSource = ds.Tables["ds"];
// GridView1.DataKeyNames = new string[] { "Monday" };
GridView1.DataBind();
}
catch (Exception ex)
{
//this.txtAFileNO.Text = ex.Message;
}
finally
{
if (!(conn.State == ConnectionState.Closed))
{
conn.Close();
}
}
}