[英]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.