Sql 从两个表中创建视图,不重复
所以请容忍我 我想创建一个视图,该视图组合了来自2个表的数据: 重试:Sql 从两个表中创建视图,不重复,sql,sql-server,Sql,Sql Server,所以请容忍我 我想创建一个视图,该视图组合了来自2个表的数据: 重试: TaskId status 1 13 2 4 档案 我需要一个联合视图: TaskId Study 1 2.3 2 4.5 我得到的是: TaskId Study 1 2.3 1 2.3 2 4.5 2 4.5 因为任务id总是属于同一个研究,所以我只需要为每个任务i
TaskId status
1 13
2 4
档案
我需要一个联合视图:
TaskId Study
1 2.3
2 4.5
我得到的是:
TaskId Study
1 2.3
1 2.3
2 4.5
2 4.5
因为任务id总是属于同一个研究,所以我只需要为每个任务id获取一个研究
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
);
按任务分组。然后,您可以使用聚合函数(如
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
);
使用
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
);
这假设
研究
对于特定的任务id
始终具有相同的值。如果不是这样,并且您实际想要的是任务id
的研究的所有值之和,您可以使用Juergen D的答案。根据您的解释,这可能基于输入数据和预期数据
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
);
研究
代表什么?对于给定的任务ID
,它是否总是相同的值?
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
);