0

我目前有一个看起来像这样的表结构(省略了一些细节):

  ColumnName         || Type
  Date_Of_Job           DateTime
  Reparied_Service      Boolean 
  Disconnect_Service    Boolean 
  Relayed_Service       Boolean 
  Reparied_Stopcock     Boolean 
  Replaced_Stopcock     Boolean 
  TPFNR_Repaired        Boolean 
  TPFNR_Replaced        Boolean 
  TPFNR_Capped          Boolean 
  Poor_Pressure_Tested  Boolean 
  Flow_Test             Boolean 
  Meter_replaced        Boolean 

我希望能够显示的是一个交叉表查询,其中月份(Date_Of_Job)作为列标题,不同类型的作业作为行标题,其中包含该月每个作业的计数。

所以是这样的:

==Job Type===========01=====02=====03 etc
Reparied_Service     5      20     30
Disconnect_Service   15     45      9
Relayed_Service      18      7      6
Reparied_Stopcock    18 
Replaced_Stopcock    20 
 etc

我遇到的问题是每个作业类型都存储为布尔列,因为每条记录都可以包含多个作业类型。例如,您可以为一条记录记录Reparied_Stopcock作业和Flow_Test

有谁知道我如何在 access 或 MS SQL 中做到这一点,哪一个并不重要。

4

1 回答 1

1

假设 Date_Of_Job 值来自同一年,您可以将 Access 交叉表查询基于 UNION 子选择。

TRANSFORM Count(q.[job_type]) AS num_jobs
SELECT q.[job_type]
FROM (
    SELECT
        Month(Date_Of_Job) AS job_month
        , "Reparied_Service" AS job_type
    FROM Jobs
    WHERE Reparied_Service=True
    UNION ALL
    SELECT
        Month(Date_Of_Job) AS job_month
        , "Disconnect_Service" AS job_type
    FROM Jobs
    WHERE Disconnect_Service=True
    ) AS q
GROUP BY q.[job_type]
PIVOT q.[job_month];
于 2009-09-07T08:34:23.657 回答