0

如果我有

表格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 或第一个值。B 列中的值在结果中应相同,并且必须是 Type = R 的值。ID 链接两行,Type 驱动 B 列中应显示的值。使用 SQL Server 2008。

4

4 回答 4

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
于 2013-07-16T15:18:02.933 回答
0

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

SELECT 
    A, 
    MIN(B) OVER(PARTITION BY ID) AS B, 
    C, 
    [Type], 
    ID
FROM 
    Table1
ORDER BY ID, B
于 2013-07-16T15:14:54.447 回答
0

我不太确定您的期望,但似乎您需要类似的东西

Select A,(SELECT TOP 1 B FROM #Temp WHERE ID=T.ID AND D='R') AS B,C,D,ID
From #Temp T
于 2013-07-16T15:13:44.647 回答
-2
Update TableName
SET Column_B = (
        SELECT Column_B
        FROM TableName
        WHERE Column_A=MIN(Column_A)
        )
WHERE ID = 1

??

于 2013-07-16T15:15:36.807 回答