日期:2014-05-17  浏览次数:20552 次

SQL疑问
请高手解决
原表是这样的
Contract No Production Order No FID CABNO type Budget Entry_ID Change_ID
322803-001 800007423906 UCYCOCC11583 Cabinet 2 Assembling 70 UCYCOCC11583AS1_1 AF57EF50-C4F1-4482-AB33-EDF17646FC2E
322803-001 800007423906 UCYCOCC11583 Cabinet 2 Material Preparation 6 UCYCOCC11583PRE_1 AF57EF50-C4F1-4482-AB33-EDF17646FC2E
322803-001 800007423906 UCYCOCC11583 Cabinet 2 Testing 20 UCYCOCC11583TST_1 AF57EF50-C4F1-4482-AB33-EDF17646FC2E
322803-001 800007423906 UCYCOCC11583 Cabinet 2 Wiring 210 UCYCOCC11583WI1_1 AF57EF50-C4F1-4482-AB33-EDF17646FC2E
这里面只有Change_ID 是唯一的,在页面中是根据Change_ID查找相关记录。
cs代码是这样的,strSQL = @"SELECT DISTINCT * FROM uv_POM_ChangeRework_History  where change_id= N'" + ViewState["Change_ID"].ToString() + "' order by FID,Entry_ID ";
这里面type只有这四种,production order有可能是多个,FID有可能是多个,cabno也可能是多个,都是不定的。
ContractNo  Production Orde FID        CabNO    Materia Assembly Wiring Testing

322803-001 800007423906 UCYCOCC11583 Cabinet 2  6   70   210    20


希望达到上面的效果,头都大了,呵呵,多谢,不知道我表达清楚了没有 
------解决方案--------------------
create table #table(a varchar(10),b varchar(10),c varchar(10) )
insert into #table
select * from (
select 1 as 'a',2 as 'b',3 as 'c'
union
select 1 as 'a',2 as 'b',4 as 'c'
union
select 1 as 'a',2 as 'b',5 as 'c'
union
select 1 as 'a',2 as 'b',6 as 'c'
) as w

select distinct a,b,(select c+' ' from #table where a='1' for xml PATH('')) from #table where a='1'
------解决方案--------------------
create table #table(a varchar(10),b varchar(10),c varchar(10) )
insert into #table
select * from (
select 1 as 'a',2 as 'b',3 as 'c'
union
select 1 as 'a',2 as 'b',4 as 'c'
union
select 1 as 'a',2 as 'b',5 as 'c'
union
select 1 as 'a',2 as 'b',6 as 'c'
) as w

select distinct a,b,(select c+' ' from #table where a='1' for xml PATH('')) from #table where a='1'


写的虚拟的。。依据列做子查询然后转换
------解决方案--------------------
你看看这个满足你的要求不:



with uv_POM_ChangeRework_History  
(ContractNo, Production, OrderNo, FID ,CABNO, type, Budget, Entry_ID ,Change_ID)  
as
(
select '322803-001', '800007423906' ,'UCYCOCC11583' ,'Cabinet' ,2 ,'Assembling', 70 ,'UCYCOCC11583AS1_1', 'AF57EF50-C4F1-4482-AB33-EDF17646FC2E'
union all
select '322803-001', '800007423906', 'UCYCOCC11583', 'Cabinet', 2, 'Material Preparation', 6 ,'UCYCOCC11583PRE_1', 'AF57EF50-C4F1-4482-AB33-EDF17646FC2E'
union