SQL - 输出中一个字段中的相同值

时间:2013-07-16 14:58:21

标签: sql sql-server

如果我有

表1

Column A, Column B, Column C, Type, ID
111       ABC       NEW       R    1 
222       LMN       NEW       L    1

我想要的是其中一个字段的相同值。所以结果应该是 -

111, ABC, NEW, R, 1
222, ABC, NEW, L, 1

ID是两者之间的公共值,可用于链接两个记录。

为了澄清,上面是我的表,我已经给出了我期望的结果。请参阅结果的第2列。我希望第2列中的值对于这两行是相同的,但是其余的值反映了表中的实际值。两行之间的公共链接是ID字段。

我认为我必须澄清我不需要前1或第1个值。 B列中的值应该在结果中相同,并且必须是Type = R的值.ID链接两行,Type驱动器应在B列中显示哪个值。使用SQL Server 2008。

4 个答案:

答案 0 :(得分:0)

我不太确定你的期望,但似乎你需要像

这样的东西
Select A,(SELECT TOP 1 B FROM #Temp WHERE ID=T.ID AND D='R') AS B,C,D,ID
From #Temp T

答案 1 :(得分:0)

假设您想要在给定ID的列B中找到第一个值...

SELECT 
    A, 
    MIN(B) OVER(PARTITION BY ID) AS B, 
    C, 
    [Type], 
    ID
FROM 
    Table1
ORDER BY ID, B

答案 2 :(得分:0)

如果您尝试在SQL Server 2012中完成此操作,可以使用FIRST_VALUE()窗口函数,如:

SELECT ColA, FIRST_VALUE(ColB) OVER(ORDER BY ColA /*or the ordering column of the query*/)
FROM Table1

http://msdn.microsoft.com/en-us/library/hh213018.aspx

否则你可以这样做一个子查询:

SELECT ColA,
-- returns the first record, add ordering if you want to choose another row
(SELECT ColB FROM Table1 WHERE ColA /*id*/ = (SELECT TOP 1 ColA FROM Table1))    
FROM Table1

答案 3 :(得分:-2)

Update TableName
SET Column_B = (
        SELECT Column_B
        FROM TableName
        WHERE Column_A=MIN(Column_A)
        )
WHERE ID = 1

...