Avatar billede larsbrink Nybegynder
25. november 2011 - 13:24 Der er 5 kommentarer og
1 løsning

Nem kopiering af række med ændring af en enkelt værdi

Jeg vil generelt ofte gerne med noget generisk SQl kunne kopiere data i en række over i en anden række og kun skifte værdien i en enkelt kolonne, eller få.

Lige nu bruger jeg tabellen, højreklik, script table as, INSERT to, men der skal man angive vædier for hver enkelt kolonne og det er dermed ikke generisk.

Eksempel:
a,b,c,d,e,f,g,h,100
b,c,d,e,f,g,h,i,101
c,d,e,f,g,h,i,j,102
q,q,q,q,q,q,q,q,200

Her vil jeg gerne tage alle værdier i 4. række og overskrive række 1, 2 og/eller 3 hvor jeg som det eneste bevarer sidste
kolonne og dermed får:
q,q,q,q,q,q,q,q,100
q,q,q,q,q,q,q,q,101
q,q,q,q,q,q,q,q,102
q,q,q,q,q,q,q,q,200

Hvordan kan det gøres generisk uden at have alle værdierne som en del af scriptet (da de ændres løbende)?

Kan det ikke gøres generisk kan det også være noget generisk SQL som opbygger det script som så kan lave opdateringen/kopieringen.
Avatar billede Syska Mester
25. november 2011 - 13:59 #1
Lyder som noget ETL du leder efter.
http://en.wikipedia.org/wiki/Extract,_transform,_load

Mener det kan laves med http://en.wikipedia.org/wiki/SQL_Server_Integration_Services

Det er mine bedste bud. Meget kan laves i SQL uden overstående, men det bliver træls i længden at arbejde med kunne jeg forestille mig. SQL kun er i hvert fald ikke den rigtige til opgaven.

Deres findes sikkert små programmer som måske rimelig nemt kan gøre det for dig. Men det kræver stadig at man gøre et eller andet.

Er det altid det samme du skal ?
Avatar billede larsbrink Nybegynder
25. november 2011 - 14:10 #2
Det er for omstændigt at eksportere data, rette og så importere.

Jeg har ikke noget imod at "gøre et eller andet" jeg vil bare ikke hver gang skrive hele listen af felter som skal select'es og igen indsættes når jeg kun vil ændre en enkelt værdi.

Det er ikke altid på samme data da jeg så havde lavet script løsningen en gang for alle.
Avatar billede Syska Mester
25. november 2011 - 15:15 #3
Har du kigget på hvad jeg har sendt af link og information?

Overstående lyder mest som svar til mit ene spørgsmål.

mvh
Avatar billede janus_007 Nybegynder
28. november 2011 - 17:21 #4
Har du prøvet med:

select * into TargetTable from MyTable


Eller

insert into TargetTable select * from MyTable

Den sidste kræver dog at TargetTable er oprettet
Avatar billede larsbrink Nybegynder
08. februar 2012 - 09:28 #5
janus_007: Beklager det sene svar. Nu har jeg prøvet.

Dit andet eksempel ser godt ud, men da mit eksempel har samme fra- og til-tabel får jeg en index fejl. Derfor skal jeg ændre på en af værdierne inden den indsættes.

Tabel1:
ID,Navn,a,b,c
01,Lars,a,b,c
02,Hans,d,e,f

Tabel1 efter:
ID,Navn,a,b,c
01,Lars,a,b,c
02,Hans,d,e,f
03,Lars,a,b,c

Jeg har taget posten med ID = 01, indsat den igen og ændret ID til 03:
insert into Table1
select * from Table1
where ID = '01'

Hvor kan jeg lave en SET eller lignende?
Avatar billede larsbrink Nybegynder
24. marts 2012 - 10:57 #6
æv
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester