【发布时间】:2021-12-24 08:08:21
【问题描述】:
我想在 SQL azure 中打印出 2 个或更多表,但我正在尝试使用 UNION 和 UNION ALL 但它仍然有相同的错误
消息 205,级别 16,状态 1,过程查询 12,第 7 行 使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询在其目标列表中必须具有相同数量的表达式
GO
CREATE PROCEDURE Query12
@date_job_completed varchar(50),
@Department_number int
AS
BEGIN
With q as(
SELECT Job.Job_no, type_of_machine_use, amount_of_time_machine_use, martirial_used, labor_time, date_job_completed as Print_out
FROM Cut_job
INNER JOIN Job ON Job.Job_no = Cut_job.Job_no
INNER JOIN No_of_Process ON No_of_Process.Process_id = Job.Process_id
INNER JOIN Department ON Department.Department_number = No_of_Process.Department_number
WHERE Cut_job.date_job_completed = @date_job_completed AND Department.Department_number = @Department_number
UNION ALL
SELECT Job.Job_no, Color, Volume, labor_time, date_job_completed as Print_out
FROM Paint_job
INNER JOIN Job ON Job.Job_no = Paint_job.Job_no
INNER JOIN No_of_Process ON No_of_Process.Process_id = Job.Process_id
INNER JOIN Department ON Department.Department_number = No_of_Process.Department_number
WHERE Paint_job.date_job_completed = @date_job_completed AND Department.Department_number = @Department_number
UNION ALL
SELECT Job.Job_no, labor_time, date_job_completed as Print_out
FROM Fit_job
INNER JOIN Job ON Job.Job_no = Fit_job.Job_no
INNER JOIN No_of_Process ON No_of_Process.Process_id = Job.Process_id
INNER JOIN Department ON Department.Department_number = No_of_Process.Department_number
WHERE Fit_job.date_job_completed = @date_job_completed AND Department.Department_number = @Department_number
)
SELECT Print_out
FROM q
END
GO
EXEC Query12 @date_job_completed = '23/23/2019', @Department_number = 4;
【问题讨论】:
-
你不明白错误信息到底是什么?为了进一步澄清还提供minimal reproducible example,即涉及的表或其他对象的
CREATE语句(粘贴文本,不要使用图像,不要链接到外部站点),INSERT用于示例数据 (dito) 的语句以及带有表格文本格式的示例数据的所需结果。通过edit提出问题来做到这一点。不要使用 cmets 获取如此重要的信息。 -
将 NULL 添加到较短的列列表中,直到获得相同的数字。
-
或者,您知道,在每个查询中包含相同的列...
-
对不起,我应该问清楚。一切都在 SQL 中打印得很好,但是当我将它连接到 Java 以打印出所有 3 个表时,Java 打印出 3 个表,但它只读取第一个表的 1 个值
-
请更新您的问题,而不是在 cmets 上回答。