行列转换

caoyang0299 2015-07-15 11:51:53
LOTID PARAMETER FAIL MIN MAX
DF10N70N44E001 T10_ISGS_35.0V_9.90mA 0.026931778 0 0.503333333
DF10N70N44E001 T10_ISGS_45.0V_9.90mA 0.026 0.1 0.503333333
转换成
LOTID T10_ISGS_35.0V_9.90mA T10_ISGS_45.0V_9.90mA
fail min max fail min max
DF10N70N44E001 0.026931778 0 0.503333333 0.026 0.1 0.503333333
求大侠指点
...全文
159 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
caoyang0299 2015-07-16
  • 打赏
  • 举报
回复
引用 7 楼 Tiger_Zhao 的回复:
    SELECT ISNULL(t1.LOTID, t2.LOTID) LOTID,
           t1.FAIL, t1.[MIN], t1.[MAX],
           t2.FAIL, t2.[MIN], t2.[MAX]
      FROM (SELECT * FROM table1 WHERE PARAMETER='T10_ISGS_35.0V_9.90mA') t1
 FULL JOIN (SELECT * FROM table1 WHERE PARAMETER='T10_ISGS_45.0V_9.90mA') t2
        ON t1.LOTID = t2.LOTID
parameter值很多,还有就是列名这块。
Tiger_Zhao 2015-07-16
  • 打赏
  • 举报
回复
    SELECT ISNULL(t1.LOTID, t2.LOTID) LOTID,
t1.FAIL, t1.[MIN], t1.[MAX],
t2.FAIL, t2.[MIN], t2.[MAX]
FROM (SELECT * FROM table1 WHERE PARAMETER='T10_ISGS_35.0V_9.90mA') t1
FULL JOIN (SELECT * FROM table1 WHERE PARAMETER='T10_ISGS_45.0V_9.90mA') t2
ON t1.LOTID = t2.LOTID
caoyang0299 2015-07-16
  • 打赏
  • 举报
回复
那样式不管,sql应该如何写。 过程,临时表都行
江南小鱼 2015-07-16
  • 打赏
  • 举报
回复
引用 2 楼 caoyang0299 的回复:
parameter的值有很多,版本低,pivot用不了, 再帮忙看看,谢谢
别一门心思想一行语句搞定了,写存储过程,用临时表,条例清晰。
Tiger_Zhao 2015-07-16
  • 打赏
  • 举报
回复
显示方式的转化最好用前台程序处理。
SQL 查询是不会有两行列头的。
li_shiye 2015-07-16
  • 打赏
  • 举报
回复
笨方法,case when 吧
caoyang0299 2015-07-16
  • 打赏
  • 举报
回复
parameter的值有很多,版本低,pivot用不了, 再帮忙看看,谢谢
Tiger_Zhao 2015-07-16
  • 打赏
  • 举报
回复
所以要用前台程序处理,SQL不擅长这个。
你喜欢用SQL做,慢慢玩吧。
江南小鱼 2015-07-15
  • 打赏
  • 举报
回复
select r1.LOTID,r1.[T10_ISGS_35.0V_9.90mA],FAILt1,MINt1,MAXt1
	,r1.[T10_ISGS_45.0V_9.90mA],FAILt2,MINt2,MAXt2
from (select LOTID,max([T10_ISGS_35.0V_9.90mA]) [T10_ISGS_35.0V_9.90mA],max([T10_ISGS_45.0V_9.90mA]) [T10_ISGS_45.0V_9.90mA] from t   
pivot(max(PARAMETER) for PARAMETER in([T10_ISGS_35.0V_9.90mA],[T10_ISGS_45.0V_9.90mA])) t1 
group by LOTID) r1
left join (select t1.LOTID,t1.FAIL FAILt1,t1.[MIN] MINt1,t1.[MAX] MAXt1,t2.FAIL FAILt2,t2.[MIN] MINt2,t2.[MAX] MAXt2
from t t1 
left join t t2 on t1.LOTID = t2.LOTID
where t1.PARAMETER = 'T10_ISGS_35.0V_9.90mA' and t2.PARAMETER = 'T10_ISGS_45.0V_9.90mA') r2 on r1.LOTID = r2.LOTID

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧