[英]Access Concatenating Values in a Query
我有一個查詢[Query1],其中包含員工姓名,項目,天,月和年。
在另一個查詢[Query2]中,我將所有值都放入一個交叉表中。 我的行是“年,月,員工”。 我的專欄是“日”。 我的價值觀是項目。
問題在於,有一天,可能有多個項目分配給一名員工。
當我嘗試使用IIf(Count(*)>0,[Project],"")
將項目作為值放入表中時,出現錯誤,因為該項目可能有多個可能的值,並且訪問沒有不知道該選擇哪一個。
如果有多個項目,我需要一種連接值的方法。
例如:
[Query1]
Bill | CC555 | 28 | 03 | 2014
Jim | CC999 | 29 | 03 | 2014
Jim | CC555 | 29 | 03 | 2014
John | CC555 | 29 | 03 | 2014
[Query2]
Year | Month | Employee | 1 | 2 | 3 | ... | 27 | 28 | 29 | 30 | 31
2014 | 03 | Bill | - | - | - | ... | - | CC555 | - | - | -
2014 | 03 | Jim | - | - | - | ... | - | - | CC555 + CC999 | - | -
2014 | 03 | John | - | - | - | ... | - | - | CC555 | - | -
另外:[Query1]是動態的,可能已刪除或添加了重復的日期,因此[Query2]值必須相應地更改。
一個簡單的示例,您必須使其動態,在實際的場景中,如果使用動態sql,則不需要表變量或CTE。我認為不需要動態,只需將硬代碼從1到31
;With CTE as
(
select 'Bill' Employee ,'CC555' codes,28 dd,03 mm ,2014 yrs union all
select 'Jim ','CC999', 29 , 03 , 2014 union all
select 'Jim ','CC555', 29 , 03 , 2014 union all
select 'John','CC555', 29 , 03 , 2014
)
select yrs,mm,Employee,isnull([28],'-')[28],[29],[30] from
(select Employee,dd,mm,yrs
,stuff((select ','+codes from cte b where b.Employee=a.Employee for xml path('')),1,1,'')codes
from cte a ) src
pivot (min(codes) for dd in([28],[29],[30])) pvt
通過使用此處allenbrowne.com/func-concat.html
的功能,並按照http://www.access-programmers.co.uk/forums/showthread.php?t=234291
的示例,我能夠解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.