【问题标题】:Access Concatenating Values in a Query访问查询中的连接值
【发布时间】:2014-02-25 16:27:37
【问题描述】:

我有一个查询 [Query1],其中包含员工姓名、项目、日期、月份和年份。

在另一个查询 [Query2] 中,我获取所有值并将它们放入一个交叉表中。我的行是“年、月、员工”。我的专栏是“日”。我的价值观是项目。

问题在于,在某一天,可能有多个项目分配给一名员工。

当我尝试使用IIf(Count(*)>0,[Project],"") 将项目作为值放入表中时,我收到一个错误,因为该项目可能有多个可能的值,并且 access 不知道该选择哪一个。

如果有多个项目,我需要一种连接值的方法。

例如:

[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] 的值必须相应更改。

【问题讨论】:

  • 它是哪个 RDBMS? Access 还是 Sql Server?
  • 抱歉,我看错了。这是访问。

标签: sql ms-access ms-access-2007


【解决方案1】:

一个简单的例子,你必须让它动态,如果使用动态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

【讨论】:

  • MS Access 是否支持 CTE?
  • 不抱歉,MS Access 不支持上述任何其他功能。您希望 MS Access 中有这些功能吗?
  • 据我了解,Access 不支持 CTE 查询。我对 VBA 不是很熟悉,但我偶然发现了这个链接 stackoverflow.com/questions/9217234/… 这会起作用吗?
【解决方案2】:

通过使用这里给出的函数allenbrowne.com/func-concat.html,并按照这里给出的例子http://www.access-programmers.co.uk/forums/showthread.php?t=234291,我能够解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2016-07-02
    • 2016-10-15
    相关资源
    最近更新 更多