这样的查询结果怎么实现? 急求...
源表
编号单位地址单号产品数量
1205057顺达食品黄海南路98达利源蛋黄派24
1205057顺达食品黄海南路98伊犁纯酸乳42
1205057顺达食品黄海南路98康师傅桶面30
1205057顺达食品黄海南路98娃哈哈八宝粥24
结果
编号 1205057 单位 顺达食品 地址 黄海南路 单号 98 产品 达利源蛋黄派 数量 24 产品 伊犁纯酸乳 数量 42 产品 康师傅桶面 数量 30 产品 娃哈哈八宝粥 数量 24
或
1205057 顺达食品 黄海南路 98 达利源蛋黄派 24 伊犁纯酸乳 42 康师傅桶面 30 娃哈哈八宝粥 24
[解决办法]
declare @sql varchar(max)set @sql='select distinct 编号,单位,地址,单号'select @sql=@sql+',max(case 产品 when '''+产品+''' then '''+产品+''' end) as ['+产品+'],sum(case 产品 when '''+产品+''' then 数量 end) as ['+产品+']'from cstableset @sql=@sql+' from cstable group by 编号,单位,地址,单号'print @sqlexec (@sql)----1205057 顺达食品 黄海南路 98 达利源蛋黄派 24 伊犁纯酸乳 42 康师傅桶面 30 娃哈哈八宝粥 24
[解决办法]
--> 测试数据:[test]if object_id('[test]') is not null drop table [test]create table [test]([编号] int,[单位] varchar(8),[地址] varchar(8),[单号] int,[产品] varchar(12),[数量] int)insert [test]select 1205057,'顺达食品','黄海南路',98,'达利源蛋黄派',24 union allselect 1205057,'顺达食品','黄海南路',98,'伊犁纯酸乳',42 union allselect 1205057,'顺达食品','黄海南路',98,'康师傅桶面',30 union allselect 1205057,'顺达食品','黄海南路',98,'娃哈哈八宝粥',24-- 查询处理SELECT *FROM (SELECT DISTINCT [编号],[单位],[地址],[单号] FROM [test])AOUTER APPLY( SELECT 产品和数量= STUFF(REPLACE(REPLACE( ( SELECT [产品]+' '+LTRIM([数量]) as VALUE FROM [test] N WHERE [编号]=A.编号 AND [单位]=A.单位 AND [地址]=A.地址 AND [单号]=A.单号 FOR XML AUTO ), '<N value="', ' '), '"/>', ''), 1, 1, ''))N/*编号 单位 地址 单号 产品和数量1205057 顺达食品 黄海南路 98 达利源蛋黄派 24 伊犁纯酸乳 42 康师傅桶面 30 娃哈哈八宝粥 24*/
[解决办法]
select distinct 编号,单位,地址,单号,内容=stuff((select' '+产品+' '+cast(数量 as varchar(10)) from cstable b for xml path ('')),1,1,'')from cstable a