在SQL Server 2008中删除VIew中的重复行

时间:2013-12-06 00:18:45

标签: sql sql-server sql-server-2008

我有两个表,TABLE1TABLE2TABLE1有4列:NameClientPositionIDTABLE2有3列:AmountTimeID。对于ID中的每个TABLE1TABLE2中有一个或多个条目,所有条目都具有相同的IDTime值但Amount值不同。

在视图中,我有来自Name的{​​{1}},ClientPositionID的串联字符串,但我还需要连接从TABLE1到此字符串的每个Time ID。如果我在创建视图时进行连接,则会在视图中获得大量重复的字符串,因为它会为TABLE2中的ID的每个值多次列出相同的Amount

我需要删除重复项,因此我要么避免从连接中发生的复制,要么找到一种方法来简单地删除视图中的所有重复项。

希望这一切都很清楚。感谢您阅读并提供任何帮助!

1 个答案:

答案 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上使用代理主键。我没有把一个放在这个例子中,因为很可能你已经有了 - 只是确定了。