网站首页 > 知识剖析 正文
SELECT 产品编号,[去毛刺(S)],[拉丝(S)],[抛光(S)],车间 from 一车间T ;
sqlserver,sql 优化上面的sql,新增工序字段, 将 [去毛刺(S)],[拉丝(S)],[抛光(S)] 这三个字段值放到 工序字段列里面
可以使用SQL Server的UNPIVOT操作将列转换为行,并新增工序字段。优化后的SQL如下:
SELECT
产品编号,
车间,
工序 = REPLACE(REPLACE(工序, '(S)', ''), '(S)', ''), -- 移除括号及内容
工序耗时
FROM 一车间T
UNPIVOT (
工序耗时 FOR 工序 IN (
[去毛刺(S)],
[拉丝(S)],
[抛光(S)]
)
) AS unpvt
优化点说明:
1. 使用UNPIVOT实现列转行,将三个工序列合并到"工序"字段
2. 通过双重REPLACE函数统一处理中文/英文括号,输出更干净的工序名称
3. 保持原有产品编号和车间字段,新增工序耗时字段
4. 比JOIN方案更高效,仅需一次表扫描
注:如果不需要清理括号内容,可简化为 `工序` 直接使用原始列名
猜你喜欢
- 2025-07-21 175.C# SqlSugar 新增数据(c#sql数据库建立)
- 2025-07-21 接口测试结果字段太多,断言烦不胜烦,DeepDiff帮你一键搞定
- 2025-07-21 多表关联查询的性能优化技巧:预关联
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)