簡體   English   中英

從一列的多行創建一個逗號分隔的字符串?

[英]Create a comma-separated string from multiple rows of one column?

我有這樣的訪問表

ID | UserName | CarBrand
-------------------------
0    Peter      VW
1    Peter      Ferrari
2    Mike       Audi
3    Peter      Dodge
4    Heidi      BMW
5    Heidi      Ford

我需要CarBrand字段中的名稱作為報告的逗號分隔列表。

有沒有辦法(沒有VB,可能使用COALESCE替代?)創建一個逗號分隔的字符串,沒有Name: part?

Peter: VW, Ferrari, Dodge
Mike:  Audi
Heidi: BMW, Ford

因為它是一個報告,還有其他方法可以做到這一點,也許在報告中使用表達式?

你不能這樣做是沒有VBA的Access。 Coalesce不存在,但您可以編寫具有某些功能的UDF,例如http://allenbrowne.com/func-concat.html但是,一旦使用UDF,查詢在Access之外就不再可行。

如果您不需要逗號分隔列表中的每個值,但只說前3或4左右,則Access中有一個純SQL解決方案。

我正在為一個擁有導師和課程的非營利組織工作。 對於大多數班級,只有1或2名導師。 出於顯示目的,我無論如何都不能列出超過2或3,所以我並不擔心會有5個或更多的導師截斷異常值。

這將抓住每個班級的3個導師,其中教師ID最低

Select JTC1.ClassID, Min(JTC1.TID1) as TutorID1,
  Min(JTC1.TID2) as TutorID2,
  Min(JTC1.TID3) as TutorID3 
from (
  Select distinct TC1.ClassID,
    TC1.TutorID as TID1,
    TC2.TutorID as TID2,
    TC3.TutorID as TID3 
  from ((
   Classes C 
   Left Join TutorClasses TC1 
     on C.ClassID = TC1.ClassID)
   Left Join TutorClasses TC2 
     on TC1.ClassID = TC2.ClassID and TC1.TutorID < TC2.TutorID
   )
   Left Join TutorClasses TC3
     on TC2.ClassID = TC3.ClassID and TC2.TutorID < TC3.TutorID
   ) as JTC1
Group by JTC1.ClassID

顯然,將三列組合成1需要1個額外的步驟(未示出)。

使用唯一的用戶名列表創建主報表。

創建一個包含用戶名列表及其汽車品牌的子報表。 加入UserName上的表單。 在子窗體的設計中,使用4-5列水平打印。 你可以讓CarBrand字段包含一個像= [CarBrand]&“,”的公式(對不起,最后一個將有一個不必要的逗號。它們將統一間隔,並且如果特定用戶有更多的話,它會分成一個新行比你報道的品牌更合適(如果你只創建一個以逗號分隔的大字符串,這將很難做到。)。

根本沒有VBA參與。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM