Jag sitter och funderar på hur man på bästa sätt kan hämta ut data ur 2 tabeller. Saken är den att data ur en av tabellerna skall läggas upp som nya kolumner alltså. Mina tabeller kan se ut såhär. Om det är SQL Server 2005, kolla efter PIVOT i hjälpen. Använder du Access(antingen som DB eller klient) kan du kika på Crosstab query. "Går inte". Om du vet ett maximalt antal kunder, så kan du eventuellt tråckla ihop en sql-sats med hjälp av en sortering på något vis. Jag har letat lite på nätet och det pekar också på att ni har rätt att det inte går med vanlig sql som min lösning tyvärr kräver. Varför måste du göra transformeringen i SQL satsen? Exakt, gör det vid presentationen, som jag skrev ovan. Du ska väl knappast använda resultattabellen efter det ändå? Tyvärr så går det inte att göra vid presentationen då det är ett dynamiskt formulär som bara skall visa resultat i en gridview...... det är extremt generellt så går inte. Är det en gridview i .NET, vb& eller vad? Vad då går inte vid presentationen? Har ni bara SQL och UI? Inget skikt därimellan? Funktionalitetn är byggd sådan att det skall vara ett enkelt verktyg att få ut generella rapporter. Om du kan tänka dig få data på formensql sats
Ansvarig
AnsvarigID
Namn
...
...
Kund
KundID
Namn
AnsvarigID
...
Jag vill att resultatet av min sql sats skall se ut följande,
En ansvarig skall skrivas ut sedan skall alla kunder listas som nya kolumner
Alltså får varje kund som den Ansvariga äger skall dyka upp efter Ansvarig.Namn.
Ansvarig.Namn | Kund.Namn | Kund.Namn | Kund.Namn | ....
--------------------------------------------------------------------------------Sv: sql sats
Sv: sql sats
Du kan ju då också ta reda på maximalt antal kunder och bygga upp sql-satsen med kod. Inte direkt vackert.
En annan, trevligare lösning, är väl helt enkelt att göra en vanlig join eller använda lite subselects etc. och sen sköta själva uppsorteringen vid presentationen.
EDIT: Om man inte använder DB-specifika lösningar då förstås.Sv:sql sats
Jag vet faktiskt antalet kunder så det får väl antagligen bli att bygga en stor sqlsats vilkets jag hade hoppats slippa.
Tack för hjälpen ändå.Sv: sql sats
Kan du inte göra det efter du hämtat data?Sv:sql sats
Sv: sql sats
Men eftersom jag vet hur många kunder som tillhör den ansvariga så kanske jag kan lista ut det.Sv:sql sats
Det kanske finnas någon smidig lösning.
T.ex. Kan du skapa Disconected recordsets med ADO med vilket du kan fylla informationen så du vill ha den. För att sedan binda den mot kontroller.Sv:sql sats
Detta är en form av pivotering som du kan göra i t.ex. T-SQL 2005 men inte i standard SQL.
I dotnet kan du hämta dina två resultat, sen bygger du upp ett Dataset/en DataTable dynamiskt med den struktur du behöver. Då kan du skapa kolumner dynamiskt.Sv: sql sats
De rapporter som går att få ut är från en sql sats som är lagd i en databas som en vanlig post därför kan jag inget göra på program sidan utan att bara fylla gridden med datan som kommer från databasen.Sv: sql sats
| Ansvarig | Kund1, Kund2, Kund3, ... , Kundn
alltså två kolumner, en med ansvarig och en som innehåller kommaseparerad (eller semikolonseparerad) data, skulle jag kika på funktionen COALESCE.
Mer info här:
http://sqljunkies.com/WebLog/donkiely/archive/2006/01/29/17922.aspx
//Lars