如果我有
表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。
答案 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
...