[英]How to insert row into a table by select column name and value from another table in SQL Server
[英]SQL select first value in a row then insert that value into another column
我对sql不是很好,所以我不确定这是否可行。 或者甚至在excel? 我正在尝试选择第一个值并忽略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;
试试这个,
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创建表。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.