太跟我一起了 我想创建一个组合来自2个表的数据的视图:
RETRY:
TaskId status
1 13
2 4
文件
FileId(key) TaskId Study
1 1 2.3
2 1 2.3
3 2 4.5
4 2 4.5
我需要一个联合视图:
TaskId Study
1 2.3
2 4.5
我得到的是:
TaskId Study
1 2.3
1 2.3
2 4.5
2 4.5
由于任务ID总是属于同一项研究,因此我需要为每项任务ID获得1项研究。
CREATE VIEW [dbo].[TASK_TO_STUDY] As (
SELECT dbo.RETRY.task_id
FROM dbo.RETRY_TASKS dbo.FILES.Study
LEFT JOIN dbo.FILES ON dbo.FILES.task_id = dbo.RETRY.task_id
);
答案 0 :(得分:1)
根据您的解释,这可能基于输入数据和预期数据
CREATE VIEW [dbo].[TASK_TO_STUDY] As (
SELECT DISTINCT r.task_id,f.Study
FROM dbo.RETRY_TASKS r
JOIN dbo.FILES f ON f.task_id = r.task_id
);
答案 1 :(得分:0)
按任务分组。然后,您可以使用聚合函数(如min
)进行特定研究
CREATE VIEW [dbo].[TASK_TO_STUDY] As
(
SELECT dbo.RETRY.task_id, MIN(dbo.FILES.Study) as Study
FROM dbo.RETRY_TASKS
LEFT JOIN dbo.FILES ON dbo.FILES.task_id = dbo.RETRY.task_id
GROUP BY dbo.RETRY.task_id
);
答案 2 :(得分:0)
使用DISTINCT
关键字仅检索所选列的不同唯一组合:
CREATE VIEW [dbo].[TASK_TO_STUDY] As
(
SELECT DISTINCT dbo.RETRY.task_id, dbo.FILES.Study
FROM dbo.RETRY_TASKS dbo.FILES.Study
LEFT JOIN dbo.FILES ON dbo.FILES.task_id = dbo.RETRY.task_id
);
这假定Study
对于特定Task_id
始终具有相同的值。如果不是这样,并且您实际想要的是Study
Task_id
的所有值的总和,您可以使用Juergen D的答案。