我有两个表,TABLE1
和TABLE2
。 TABLE1
有4列:Name
,Client
,Position
和ID
。 TABLE2
有3列:Amount
,Time
和ID
。对于ID
中的每个TABLE1
,TABLE2
中有一个或多个条目,所有条目都具有相同的ID
和Time
值但Amount
值不同。
在视图中,我有来自Name
的{{1}},Client
,Position
和ID
的串联字符串,但我还需要连接从TABLE1
到此字符串的每个Time
ID
。如果我在创建视图时进行连接,则会在视图中获得大量重复的字符串,因为它会为TABLE2
中的ID
的每个值多次列出相同的Amount
。
我需要删除重复项,因此我要么避免从连接中发生的复制,要么找到一种方法来简单地删除视图中的所有重复项。
希望这一切都很清楚。感谢您阅读并提供任何帮助!
答案 0 :(得分:1)
DISTINCT
可能合适:
CREATE VIEW [dbo].[View1]
AS
SELECT distinct
dbo.Table1.Id,
dbo.Table1.Name,
dbo.Table1.Client,
dbo.Table1.Position,
dbo.Table2.[Time]
FROM dbo.Table1
LEFT OUTER JOIN dbo.Table2
ON dbo.Table1.Id = dbo.Table2.Id
SqlFiddle:http://sqlfiddle.com/#!3/65651/1
另外,根据您的表格结构的实际情况,如果您没有自然的主要密钥,您可以考虑在table2上使用代理主键。我没有把一个放在这个例子中,因为很可能你已经有了 - 只是确定了。