Tengo una tabla llamada table123 , con aproximadamente 80 filas. Incluye las columnas ' ID ', ' First_Name ', ' Apellido ', ' Job_Title ', '< strong> Salario 'y' Dirección '.
He creado una nueva tabla llamada table987 , que es una copia exacta de table123 . Esto es para no arruinar table123 con ningún comando.
Dentro de table987 , quiero duplicar todos los valores, para que haya 2 copias de cada fila. Entonces, si tengo una fila con ' John ' como ' First_Name ', quiero que la copia duplicada de ' John ' aparezca inmediatamente después en la mesa
Sin embargo, no quiero que la copia duplicada tenga el mismo ' ID '. Cada fila debe tener un ' ID único'. Esencialmente, debe haber 2 de cada registro, pero cada uno debe tener un ' ID ' único.
Intenté usar el siguiente script para duplicar los valores, pero cada duplicado tiene el mismo ' ID ' que el registro original:
INSERT INTO table987 (ID, First_Name, Surname, Job_Title, Salary, Address)
SELECT ID, First_Name, Surname, Job_Title, Salary, Address
FROM table123;
¿Existe un script específico que pueda usar para ordenar los duplicados de tal manera?
2 respuestas
Aunque la respuesta ya está aceptada, al ver los comentarios anteriores ( "pero ahora está confundida por todas partes" ), quiero agregar la cláusula ORDER BY a la consulta , que le proporcionará los datos solicitados según lo requerido en los comentarios mencionados anteriormente:
DECLARE @table123 table(ID int, First_Name varchar(100),Surname varchar(100),Job_Title varchar(100),Address varchar(100))
DECLARE @table987 table(ID int, First_Name varchar(100),Surname varchar(100),Job_Title varchar(100),Address varchar(100))
INSERT INTO @table123
VALUES
(1,'FName1','Surname1','JobTitle1','Address1'),
(2,'FName2','Surname2','JobTitle2','Address2'),
(3,'FName3','Surname3','JobTitle3','Address3'),
(4,'FName4','Surname4','JobTitle4','Address4'),
(5,'FName5','Surname5','JobTitle5','Address5')
INSERT INTO @table987
SELECT * FROM (
SELECT * FROM @table123
UNION ALL
SELECT * FROM @table123)result ORDER BY ID
SELECT * FROM @table987;
Salida:
--------------------------------------------------
|ID First_Name Surname Job_Title Address |
|------------------------------------------------|
|1 FName1 Surname1 JobTitle1 Address1|
|1 FName1 Surname1 JobTitle1 Address1|
|2 FName2 Surname2 JobTitle2 Address2|
|2 FName2 Surname2 JobTitle2 Address2|
|3 FName3 Surname3 JobTitle3 Address3|
|3 FName3 Surname3 JobTitle3 Address3|
|4 FName4 Surname4 JobTitle4 Address4|
|4 FName4 Surname4 JobTitle4 Address4|
|5 FName5 Surname5 JobTitle5 Address5|
|5 FName5 Surname5 JobTitle5 Address5|
--------------------------------------------------
Utilice UNION ALL y configure ' ID ' como incremento automático o establezca el valor predeterminado NEWID ()
INSERT INTO dbo.table987
( First_Name ,
Surname ,
Job_Title ,
Salary ,
Address
)
SELECT First_Name ,
Surname ,
Job_Title ,
Salary ,
Address
FROM dbo.table123
UNION ALL
SELECT First_Name ,
Surname ,
Job_Title ,
Salary ,
Address
FROM dbo.table123
Nuevas preguntas
sql-server
Microsoft SQL Server es un sistema de gestión de bases de datos relacionales (RDBMS). Use esta etiqueta para todas las ediciones de SQL Server, incluidas Compact, Express, Azure, Fast-track, APS (anteriormente PDW) y Azure SQL DW. No use esta etiqueta para otros tipos de DBMS (MySQL, PostgreSQL, Oracle, etc.). No utilice esta etiqueta para problemas de software y desarrollo móvil, a menos que esté directamente relacionada con la base de datos.