版本:sql2000SP4
OS:win2003

问题:我有一个如图所示的表


需求:我想得到下面的表格:并且不想用临时表,最好是视图,可以有中间视图。

cpicicvalue1,cvalue2,cvalue3,cvalue4
-----------------
T501|31|33|5|
T502|22|3||
T503|23|44|50|53


数据:

CREATEtabletb1--数据表
(
cpicivarchar(10)notnull,
cnamevarchar(10)notnull,
cvalueintnull
)
--插入测试数据
INSERTINTOtb1values('T501','x1',31)
INSERTINTOtb1values('T501','x1',33)
INSERTINTOtb1values('T501','x1',5)

INSERTINTOtb1values('T502','x1',3)
INSERTINTOtb1values('T502','x1',22)
INSERTINTOtb1values('T502','x1',3)

INSERTINTOtb1values('T503','x1',53)
INSERTINTOtb1values('T503','x1',44)
INSERTINTOtb1values('T503','x1',50)
INSERTINTOtb1values('T503','x1',23)

SELECT*FROMtb1




5 个解决方案

#1


ifobject_id('tb1')isnotnulldroptabletb1
go
CREATEtabletb1--数据表
(
cpicivarchar(10)notnull,
cnamevarchar(10)notnull,
cvalueintnull
)
--插入测试数据
INSERTINTOtb1values('T501','x1',31)
INSERTINTOtb1values('T501','x1',33)
INSERTINTOtb1values('T501','x1',5)

INSERTINTOtb1values('T502','x1',3)
INSERTINTOtb1values('T502','x1',22)
INSERTINTOtb1values('T502','x1',3)

INSERTINTOtb1values('T503','x1',53)
INSERTINTOtb1values('T503','x1',44)
INSERTINTOtb1values('T503','x1',50)
INSERTINTOtb1values('T503','x1',23)

----------------------------------



ifobject_id('vv')isnotnulldropviewvv
go
CREATEviewvv
as

selectcpici,
cvalue1=max(casewhenpx=1thencvalueelse0end),
cvalue2=max(casewhenpx=2thencvalueelse0end),
cvalue3=max(casewhenpx=3thencvalueelse0end),
cvalue4=max(casewhenpx=4thencvalueelse0end)
from(
select*,px=(selectcount(distinctcvalue)fromtb1wherecpici=t.cpiciandcvalue<=t.cvalue)fromtb1t
)b
groupbycpici

go


select*fromvv

cpicicvalue1cvalue2cvalue3cvalue4
------------------------------------------------------
T501531330
T50232200
T50323445053

(3行受影响)

更多相关文章

  1. 自定义视图(组合控件)
  2. RecycleView的多视图Epoxy库
  3. android listview多视图嵌套多视图
  4. 【JavaWeb-6】HttpServletResponse的字符字节输出流、编码、文件
  5. Android - Espresso -滚动到非列表视图项。
  6. 导航架构组件 - 具有CollapsingToolbar的详细信息视图
  7. 仪表测试自定义视图
  8. 无法将视图添加到相对布局
  9. ListView的上拉弹簧、下拉弹簧,下拉弹簧时动态带刷新和切换换刷新

随机推荐

  1. php中的绘图技术详解
  2. PHP如何实现支付宝支付功能(图文详解)
  3. PHP 数组常用函数总结
  4. PHP重置数组为连续数字索引的三种方式
  5. PHP中箭头函数的实例详解
  6. PHP根据键值合并数组
  7. php单例模式 使用场景和使用方法
  8. 学习PHP死循环写法和作用
  9. PHP 简单实现延时操作
  10. 详细解读PHP中return用法(附代码)