Sql server 2008 如何在不使用临时表或变量的情况下,将MS SQL 2008 R2中的一个字段的多行合并为一行?
如何在不使用临时表或变量的情况下实现目标 表:Sql server 2008 如何在不使用临时表或变量的情况下,将MS SQL 2008 R2中的一个字段的多行合并为一行?,sql-server-2008,rows,Sql Server 2008,Rows,如何在不使用临时表或变量的情况下实现目标 表: ID ModelNum Qty 123 ABC 4 123 DEF 4 预期结果: ID Models Qty 123 ABC | DEF 4 提前谢谢 DECLARE @T TABLE (ID INT,ModelNum CHAR(3),Qty INT) INSERT INTO @T VALUES (123,'ABC',4), (123,'DEF',4), (1
ID ModelNum Qty
123 ABC 4
123 DEF 4
预期结果:
ID Models Qty
123 ABC | DEF 4
提前谢谢
DECLARE @T TABLE (ID INT,ModelNum CHAR(3),Qty INT)
INSERT INTO @T
VALUES
(123,'ABC',4),
(123,'DEF',4),
(123,'GLK',4)
SELECT DISTINCT ID, STUFF(C.List, 1, 2, '') Models, Qty
FROM @T t
CROSS APPLY (
SELECT '| ' + ModelNum
FROM @T
WHERE ID = t.ID
FOR XML PATH('')
)C(List)
结果集
ID Models Qty
123 ABC| DEF| GLK 4
结果集
ID Models Qty
123 ABC| DEF| GLK 4
您好,下面的查询如何: 我用不同的逻辑和属性做了相同的例子 我可以得到预期的OP,如果你对我有任何建议,请回复btechit@hotmail.com. 宣布:
@ConcatTable table (Ename varchar(30), Empno int)
Insert into @ConcatTable values ('Steve', 100),('mathew', 100),('jon', 101),('tom', 101)
--select * from @ConcatTable
--select ROW_NUMBER()over(order by Empno)Row2,* from
--(select distinct Empno from @ConcatTable)C
declare @p varchar(100) = ''
select @p = @p+ ' '+Ename from (
select DENSE_RANK()over(order by Empno)as dens, * from @ConcatTable )A
where A.dens = 1
declare @q varchar(100) = ''
select @q = @q+ ' '+Ename from (
select DENSE_RANK()over(order by Empno)as dens, * from @ConcatTable )A
where A.dens = 2
--SELECT @p
--SELECT @q
declare @M table (Name varchar(30))
insert into @M
select * from(
select @p as v
union all
select @q as vv
)G
--SELECT ROW_NUMBER()over (order by Name desc)Rown1,* from @M
SELECT A.Name,CC.Empno FROM(
SELECT ROW_NUMBER()over (order by Name desc)Rown1,* FROM @M)A
inner join
(select ROW_NUMBER()over(order by Empno)Row2,* from
(select distinct Empno from @ConcatTable)C
)CC
on A.Rown1 = CC.Row2
您好,下面的查询如何: 我用不同的逻辑和属性做了相同的例子 我可以得到预期的OP,如果你对我有任何建议,请回复btechit@hotmail.com. 宣布:
@ConcatTable table (Ename varchar(30), Empno int)
Insert into @ConcatTable values ('Steve', 100),('mathew', 100),('jon', 101),('tom', 101)
--select * from @ConcatTable
--select ROW_NUMBER()over(order by Empno)Row2,* from
--(select distinct Empno from @ConcatTable)C
declare @p varchar(100) = ''
select @p = @p+ ' '+Ename from (
select DENSE_RANK()over(order by Empno)as dens, * from @ConcatTable )A
where A.dens = 1
declare @q varchar(100) = ''
select @q = @q+ ' '+Ename from (
select DENSE_RANK()over(order by Empno)as dens, * from @ConcatTable )A
where A.dens = 2
--SELECT @p
--SELECT @q
declare @M table (Name varchar(30))
insert into @M
select * from(
select @p as v
union all
select @q as vv
)G
--SELECT ROW_NUMBER()over (order by Name desc)Rown1,* from @M
SELECT A.Name,CC.Empno FROM(
SELECT ROW_NUMBER()over (order by Name desc)Rown1,* FROM @M)A
inner join
(select ROW_NUMBER()over(order by Empno)Row2,* from
(select distinct Empno from @ConcatTable)C
)CC
on A.Rown1 = CC.Row2
可能的重复可能的重复