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

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