簡體   English   中英

訪問查詢中的串聯值

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

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