Toon posts:

[SQL] Meedere rijen in een kolom

Pagina: 1
Acties:

Verwijderd

Topicstarter
SQL moraalridders kunnen dit topic onmiddelijk verlaten ;) Ik ben op zoek naar een stuk zeer kromme SQL code. Ik gebruik MSSQL en wil het volgende. Ik heb bijvoorbeeld de volgende tabel:

1Amsterdam
2Leiden
3Haarlem
4Groningen

Ik wil een select doen, maar dan wil ik dat alle plaatsnamen in EEN KOLOM in plaats van 4 rijen terecht komen. Het resultaat moet er dus zo uit komen te zien:

Amsterdam Leiden Haarlem Groningen


De reden waarom ik het zo wil hebben is niet echt belangrijk. Waar ik benieuwd naar ben is: Is dit mogelijk? En zo ja: Hoe?

[ Voor 3% gewijzigd door Verwijderd op 01-07-2003 15:27 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Ja het is mogelijk.
Je zult een function moeten maken.
Zie ook dit topic: [rml][ sql] rijen naar kolommen join query (onmogelijk??)[/rml]

Verder vind ik wel dat je een beetje rustiger je topic mag beginnen. De zin 'SQL moraalridders mogen dit topic direct verlaten' staat mij niet echt aan.

[ Voor 11% gewijzigd door whoami op 01-07-2003 15:27 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Het was niet om mensen af te schikken. Ik heb het vaak genoeg meegemaakt dat ik op usenet een vraag stelde ik in plaats van een antwoord tig SQL puristen op m'n nek kreeg. ("Neeee, daar is SQL niet voor bedoel!") Heel erg frustrerend als je op zoek bent naar het antwoord van een ingewikkeld vraagstuk. Ik heb er maar een knipoogje achter gezet, want zo vervelend bedoelde ik het nou ook weer niet hoor ;)

[ Voor 7% gewijzigd door Verwijderd op 01-07-2003 15:30 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Eigenlijk hebben ze wel gelijk.
SQL is niet bedoeld om de opmaak te gaan verzorgen. SQL is bedoeld om gegevens op te halen, te manipuleren etc...

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

[NietSQLMoraalRidderig]

Als je niet weet hoeveel records er aan zitten te komen is het volgens mij niet 'ff snel met een query' te doen. Normaal gezien zorgt SQL voor 't ophalen van data, en je applicatie/webpage/whatever voor de vormgeving ervan.

Ideetje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
Function MaakString(Query : TAdoDataSet) : string;
var str : string;
begin
  str := Query.FieldByName('Stad').asString;
  Query.Next;
  while not Query.EOF do
  begin
    str := str + ' ' +  query.FieldByName('Stad').asString;
    Query.Next;
  end;
  result := str;
end;

[/NietSQLMoraalRidderig]

[ Voor 10% gewijzigd door OZ-Gump op 01-07-2003 15:32 ]

My personal website


Verwijderd

Topicstarter
Ik weet het. Ik zal mijn probleem wat toelichten:

We hebben hier een software component op ons werk, draaiend op een server. Dit component slikt een SQL query in, en poept een CSV file uit. Ik mag NIETS aan het component veranderen. Dit betekent dat de query die ik er in stop PRECIES datgene moet opleveren wat ik in m'n CSV file wil hebben.

Deze constructie dwint mij inderdaad tot onconventionele methoden, maar het is helaas niet anders ;(

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Je kan in SQL Server een function maken die die waardes gaat ophalen, en ze in een string stopt en dan deze string returned.

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Verwijderd schreef op 01 July 2003 @ 15:32:
Ik weet het. Ik zal mijn probleem wat toelichten:

<...knip...>

Deze constructie dwint mij inderdaad tot onconventionele methoden, maar het is helaas niet anders ;(
Kijk, dat maakt de zaak al meteen anders. En dan is het opeens ook niet zo gek meer als je een dergelijke vraag stelt. ;) Er zijn echter (helaas) ook veel users hier die dit soort vragen stellen omdat ze niet weten hoe ze het anders kunnen oplossen :X

Da's waarschijnlijk de reden dat je vaak dat soort 'Daar is SQL niet voor' reacties krijgt. Anyhow: see whoami en zijn posts, die moeten je kunnen helpen.

[ Voor 3% gewijzigd door OZ-Gump op 01-07-2003 15:49 ]

My personal website


Verwijderd

Topicstarter
Ok, bij deze mijn excuses voor m'n lompe entry :) Ik ga wat met functions stoeien. Nog nooit gedaan, leer ik ook weer eens wat ;)

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Als alternatief zou je met een eenvoudige bewerking op de csv (replace "<enter>" door ";" ) wel een gewone query kunnen gebruiken.

Who is John Galt?


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE PROCEDURE selectPlaatsnamen
AS
BEGIN
   DECLARE
     @plaatsnamen TEXT,
     @plaatsnaam VARCHAR(500),
     @plaatsnaam_cursor CURSOR FOR
   SELECT plaatsnaam FROM plaatsnaam
   OPEN @plaatsnaam_cursor
   FETCH NEXT FROM plaatsnaam_cursor
   WHILE @@FETCH_STATUS = 0
   BEGIN
     FETCH plaatsnaam_cursor INTO @plaatsnaam
     @plaatsnamen = @plaatsnamen + ' ' + @plaatsnaam
     FETCH NEXT FROM plaatsnaam_cursor
   END
   CLOSE plaatsnaam_cursor
   DEALLOCATE plaatnaam_cursor
   SELECT @ plaatsnamen
END

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Mooi, maar dat zal niet werken.
Een procedure kan je niet uitvoeren in een SELECT statement.

https://fgheysels.github.io/


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

whoami schreef op 01 July 2003 @ 19:29:
Mooi, maar dat zal niet werken.
Een procedure kan je niet uitvoeren in een SELECT statement.
En een function ook niet? Das dan wel een gemis.

Kan je in MSSQL nog eigen aggregate-functies definieren?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:40
Een function wel, een procedure niet.

Ik geloof dat dat in Oracle trouwens hetzelfde is.

https://fgheysels.github.io/


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

whoami schreef op 01 juli 2003 @ 19:34:
Een function wel, een procedure niet.

Ik geloof dat dat in Oracle trouwens hetzelfde is.
In Oracle kan alleen een function.
Een procedure lijkt me ook vrij onzinnig 8)7

Who is John Galt?

Pagina: 1