SQLselect行中的第一个值,然后将该值插入到另一列中

我不是很好,所以我不知道这是可能的。 或者,甚至在Excel中? 我正在尝试select第一个值,并忽略来自Product_ID的重复项,然后将该行的第一个值添加到Title列。

另请注意,我的产品列表超过25,000个以上。

所以拿这个:

+---------------+------------+-------+-------------+-------+ | Product_Count | Product_ID | Title | _Color_Name | _Size | +---------------+------------+-------+-------------+-------+ | 2 | 14589 | | Black | 00 | | 3 | 14589 | | Black | 0 | | 4 | 14589 | | Black | 2 | | 5 | 14589 | | Black | 4 | | 6 | 14589 | | Black | 6 | | 11 | 14589 | | Dark Coral | 00 | | 12 | 14589 | | Dark Coral | 0 | | 13 | 14589 | | Dark Coral | 2 | | 14 | 14589 | | Dark Coral | 4 | | 15 | 14589 | | Dark Coral | 6 | | 129 | 15027 | | Aqua | 00 | | 130 | 15027 | | Aqua | 0 | | 131 | 15027 | | Aqua | 2 | | 132 | 15027 | | Aqua | 4 | | 133 | 15027 | | Aqua | 6 | | 138 | 15027 | | Black | 00 | | 139 | 15027 | | Black | 0 | | 140 | 15027 | | Black | 2 | | 141 | 15027 | | Black | 4 | | 142 | 15027 | | Black | 6 | +---------------+------------+-------+-------------+-------+ 

把它变成这样:

 +---------------+------------+-------+-------------+-------+ | Product_Count | Product_ID | Title | _Color_Name | _Size | +---------------+------------+-------+-------------+-------+ | 2 | 14589 | 14589 | Black | 00 | | 3 | 14589 | | Black | 0 | | 4 | 14589 | | Black | 2 | | 5 | 14589 | | Black | 4 | | 6 | 14589 | | Black | 6 | | 11 | 14589 | | Dark Coral | 00 | | 12 | 14589 | | Dark Coral | 0 | | 13 | 14589 | | Dark Coral | 2 | | 14 | 14589 | | Dark Coral | 4 | | 15 | 14589 | | Dark Coral | 6 | | 129 | 15027 | 15027 | Aqua | 00 | | 130 | 15027 | | Aqua | 0 | | 131 | 15027 | | Aqua | 2 | | 132 | 15027 | | Aqua | 4 | | 133 | 15027 | | Aqua | 6 | | 138 | 15027 | | Black | 00 | | 139 | 15027 | | Black | 0 | | 140 | 15027 | | Black | 2 | | 141 | 15027 | | Black | 4 | | 142 | 15027 | | Black | 6 | +---------------+------------+-------+-------------+-------+ 

您可以使用PARTITION来窗口ProductIds ,然后使用ROW_NUMBER()标识每个分区中的第一行:

 SELECT ProductID, Product_Count, CASE WHEN rn = 1 THEN ProductID else null END AS Title, Color_Name, Size FROM ( SELECT ProductID, Product_Count, Color_Name, Size, ROW_NUMBER() OVER (PARTITION BY ProductID ORDER BY Product_Count) AS rn FROM product_stock ) AS X; 

SqlFiddle在这里

尝试这个,

 Declare @t table (col1 int,col2 int,col3 int) insert into @t values(2,3,null),(2,4,null),(5,3,null),(5,4,null) ;with CTE as (select *,ROW_NUMBER()over(partition by col1 order by col1)rn from @t ) select a.col1,a.col2,case when a.rn=1 then b.col1 end col3 from CTE a left join (select col1 from cte where rn>1) b on a.col1=b.col1 

用UNIQUE创build表。

 CREATE TABLE recentDetails" + "(_id integer primary key autoincrement," + "fileName TEXT, filePath TEXT UNIQUE ,fileSize TEXT,fileDate TEXT); 

SELECT * from TABLE_NAME WHERE Product_count IN (SELECT MIN(Product_COUNT) FROM TABLE_NAME where Product_ID IN (SELECT DISTINCT Product_ID FROM TABLE_NAME)) AND Product_ID IN (SELECT DISTINCT Product_ID FROM TABLE_NAME)