Вывести несколько строк в столбец во временную таблицу - PullRequest
0 голосов
/ 05 декабря 2018

Это моя таблица имеет 2 столбца с 5 записями.Как показать эти 5 записей во временной таблице в 2,5 строки.означает извлечь 2 строки из этой таблицы и вставить 1 строку временной таблицы с 4 столбцами в хранимой процедуре

image

второе изображение - временная таблица, как я хочу данные.если в будущем я хочу отобразить 10 записей в 3 рядах, то во временной таблице будет 3,1 строки

image

Имя таблицы Party_Details

PID       PartyName     Address 
------------------------------------
1           Shadab      Bareilly
2           Akbar       Moradabad
3           Aqib        Bareilly
4           Majid       Moradabad
5           Shaan       Bareilly

Выше таблицы есть 5 строк.

Как показать ее в 2,5 строках во временной таблице в хранимой процедуре SQL Server?

@ GeorgeJoseph

Если там я их покажу в1 во временной таблице будет 10 столбцов, например

PartyName1,Address1,PartyName2,Address2............. PartyName5,Address5

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Для 6 столбцов

create procedure [dbo].[SP_Party_Details_Three_Step]
as
begin
declare @id int
set @id=(select COUNT(*) from Party_Details)

DECLARE @tempTable TABLE(
    PID int primary key identity(1,1),
    PartyName varchar(20),
    Address varchar(50),
    PartyName1 varchar(20),
    Address1 varchar(50),
    PartyName2 varchar(20),
    Address2 varchar(50));

DECLARE @I INT=(select Min(PId) from Party_Details);
START:             

If((select Count(*) from @tempTable where PartyName2 is null)=0)
    insert into @tempTable(PartyName,Address) select p.PartyName, p.Address from Party_Details p where p.PId=@I

    else if((select Count(*) from @tempTable where PartyName1 is null)>0)
    update t set t.PartyName1=(select PartyName from Party_Details where PId=@I),
    t.Address1=(select Address from Party_Details where PId=@I) from @tempTable t where t.PId=(select max(pid) from @tempTable)     

    else
    update t set t.PartyName2=(select PartyName from Party_Details where PId=@I),
    t.Address2=(select Address from Party_Details where PId=@I) from @tempTable t where t.PId=(select max(pid) from @tempTable)

  PRINT @I;
  SET @I+=1;
IF @I<=@id GOTO START; 


SELECT * FROM @tempTable;
end

exec [SP_Party_Details_Three_Step]
0 голосов
/ 05 декабря 2018
 create procedure SP_Party_Details 
 as
 begin
 declare @id int
 set @id=(select COUNT(*) from Party_Details)

 DECLARE @tempTable TABLE(
    PID int primary key identity(1,1),
    PartyName varchar(20),
    Address varchar(50),
    PartyName1 varchar(20),
    Address1 varchar(50));

 DECLARE @I INT=(select Min(PId) from Party_Details);
 START:               

 If @I%2!=0
      insert into @tempTable(PartyName,Address) select p.PartyName, p.Address from Party_Details p where p.PId=@I
    else    
      update t set t.PartyName1=(select PartyName from Party_Details where PId=@I),
    t.Address1=(select Address from Party_Details where PId=@I) from @tempTable t where t.PId=(select max(pid) from @tempTable)

 SET @I+=1;
 IF @I<=@id GOTO START; 


 SELECT * FROM @tempTable;
 end

 exec SP_Party_Details

Получил ожидаемый результат

...