Avatar billede a-torsten Nybegynder
07. september 2007 - 12:10 Der er 2 kommentarer og
1 løsning

Subquery som liste

Hej,

Kan følgende lade sig gøre på en eller anden måde....

SELECT DISTINCT ContactID, (Select Count(*) from MyTable as mt WHERE mt.ContactID = MyTable .ContactID) as Antal
FROM MyTable

Følgende giver de distincte contactid´er i MyTable + antallet af forekomster....

Kan jeg i samme query få fx en liste over ordrenr... Lignende :

SELECT DISTINCT ContactID, (Select Count(*) from MyTable as mt WHERE mt.ContactID = MyTable .ContactID) as Antal,
(Select Ordre from MyTable as mt WHERE mt.ContactID = MyTable .ContactID) as OrdreList
FROM MyTable

Ovenstående virker kun så længe der kun findes 1 row... Findes der flere fejler den med "Subquery returned more than 1 value"

Er der nogen måde jeg kan danne den anden subquery om til en liste som kan være i en række...

Fx kan den returnerer

ContactID | Antal | Ordre
1 | 3 | "3323,3231,1222"

Er der nogen måde at tilpasse min query på eller må jeg dele det op i flere kald ?

/Anders
Avatar billede terry Ekspert
07. september 2007 - 13:34 #1
Try making a user function an dthen use this in your query

Something like this (NOT TESTED)

CREATE function dbo.OrderList(@CID as Integer) returns nvarchar(2000)
as
begin
DECLARE @tekst nvarchar(2000)
DECLARE @nl as char(3)


set @tekst=''
set @nl = ', '


    SELECT @tekst = @tekst + dbo.myTable.OrderNumber + @nl
    FROM        dbo.MyTable
    WHERE    (dbo.myTable.ContactId = @CID)
   

return @tekst
end



Then in your SQL you would use

SELECT ....., dbo.OrderList(ContactId) as Ordre .....
Avatar billede terry Ekspert
13. september 2007 - 16:02 #2
status Anders?
Avatar billede terry Ekspert
14. september 2007 - 10:28 #3
THanks, hope you could use the answer give.
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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