Sql 如何根据报表生成器中的条件添加空行

Sql 如何根据报表生成器中的条件添加空行,sql,report,builder,Sql,Report,Builder,我有具体的报告,我需要创建。我有两个表格,一个有我公司的工作数据,另一个有在那里工作的人的数据。在jobs表中有一个数据字段,其中包含有多少人可以从事某项工作的数据—job的名称和1、2或其他人数。我需要的报告,将显示一个工作的名称,然后在该工作的人的名单,但这是一个问题,如果有较少的人,然后工作地点,我需要为每个空的工作地点添加空行。例如: job name 1 = 3 places job name 2 = 4 places 报告: JOB NAME 1 -----------------

我有具体的报告,我需要创建。我有两个表格,一个有我公司的工作数据,另一个有在那里工作的人的数据。在jobs表中有一个数据字段,其中包含有多少人可以从事某项工作的数据—job的名称和1、2或其他人数。我需要的报告,将显示一个工作的名称,然后在该工作的人的名单,但这是一个问题,如果有较少的人,然后工作地点,我需要为每个空的工作地点添加空行。例如:

job name 1 = 3 places
job name 2 = 4 places
报告:

JOB NAME 1
---------------------- 
WORKING MAN NAME 1   
WORKING MAN NAME 2   
--- empty place ---  

JOB NAME 2
----------------------
WORKING MAN NAME 1   
WORKING MAN NAME 2   
--- empty place --- 
--- empty place --- 
我忘了提到我正在IBMSystemz上使用DB2数据库,而为了生成报告,我正在使用VisualStudio10。我的两张桌子是:

作业:作业id、作业名称、作业编号位置

工人:工人id、工人姓名、工作id


我正在加入关于job_id的表格

这不是我想要的答案,但无论如何还是要谢谢你。我忘了提到我正在IBMSystemz上使用DB2数据库,而为了生成报告,我正在使用VisualStudio10。所以我认为这是行不通的,原因之一是没有row_number函数。窗口函数row_number是sql 2003的一部分。应该由DB2支持。是的,你是对的,我错了。直到一个月前,我们才有了旧版本的DB2,所以我仍然习惯于新的DB29和其他功能
WITH JobPositions AS (
    SELECT 'Job1' AS JobName, 3 AS Positions
  UNION ALL
    SELECT 'Job2', 4 AS Positions
)
,Workers AS (
    SELECT 'Worker1' AS WorkerName, 'Job1' AS JobName
  UNION ALL
    SELECT 'Worker2' AS WorkerName, 'Job1' AS JobName
  UNION ALL
    SELECT 'Worker3' AS WorkerName, 'Job2' AS JobName
)
-- Real query starts here.
-- Create a line for each position in each job
, JobPositionNumber AS (
    SELECT JobName, Positions, 1 AS PositionNumber
    FROM JobPositions
  UNION ALL
    SELECT JobName, Positions, PositionNumber + 1
    FROM JobPositionNumber
    WHERE PositionNumber < Positions
)
-- Number the workers from 1 and up per job
, WorkerPositionNumber AS (
    SELECT WorkerName
          ,JobName
          ,ROW_NUMBER() OVER (PARTITION BY JobName
                              ORDER BY WorkerName) AS PositionNumber
    FROM Workers
)
-- Now just join numbered jobs with numbered workers
SELECT JobPositionNumber.JobName
      ,CASE WHEN WorkerPositionNumber.WorkerName IS NULL 
            THEN '--- empty place ---' 
            ELSE WorkerName 
       END AS WorkerName 
FROM JobPositionNumber
     LEFT JOIN WorkerPositionNumber
         ON JobPositionNumber.JobName = WorkerPositionNumber.JobName
            AND JobPositionNumber.PositionNumber = WorkerPositionNumber.PositionNumber
ORDER BY JobPositionNumber.JobName
        ,JobPositionNumber.PositionNumber