SQL - 查看哪些重复缺少条目的值

时间:2018-04-19 14:16:41

标签: sql-server tsql view

我需要创建一个视图,它会通过创建重复项来传播缺失值。这是一个例子:

用这样的表格:

NR|Description|FK  
0 |Text1      |0  
0 |Text2      |1  
0 |Text4      |2
1 |Text3      |0

创建此类视图:

NR|Description|FK  
0 |Text1      |0  
0 |Text2      |1  
0 |Text4      |2  
1 |Text3      |0   
1 |Text3      |1 
1 |Text3      |2 

原始表将始终至少有一个条目具有特定的NR列和列FK值0.所以简而言之,如果有一行具有唯一的NR和列FK值为0并且没有FK值为1的行然后根据FK值为0的行创建一个

修改 可以有多个唯一的FK值

2 个答案:

答案 0 :(得分:1)

这应该这样做

Select the data and headings.
Choose the Data Tab and click sort.
Sort by column (movie-name) and make sure the 'My Data contains headers' checkbox is selected.
Next while the data is still highlighted and the Data tab is still open,
  Choose the SubTotal button, movie-name should be selected in the 'At each change' option,
  Select each column you want subtotaled. (Jan-Dec), Click okay.

答案 1 :(得分:0)

你可以这样做:

SELECT [NR], [Description], newtbl2.[FK] FROM (

SELECT [NR], [Description], newtbl.[FK] FROM [dbo].[myTable] oldtbl 
LEFT OUTER JOIN (select [NR], [Description], 1 as [FK]) newtbl ON newtbl.[FK] = oldtbl.[FK] 

) joined
LEFT OUTER JOIN (select [NR], [Description], 0 as [FK]) newtbl2 ON newtbl2.[FK] = joined.[FK] 

这里发生的事情是:首先,我要加入一个重复的表,其中1为原始表的FK。这样,如果FK没有包含1的行,它会创建一个,如果有一行,它只会加入该行 - 为您提供相同的NR和{{1} }。

接下来,我正在加入另一个表,其中0为Description。基本上与第一步相同,但用0而不是1。

别名可能需要一些工作,但总的来说,这种方法应该有效。