求解 sql 2005 语句,因为数据较多,最好是静态和动态2种方式的语句,如果当前内容和当前时间不好写的话,可以忽略不要,请高手解答,求了好多天了,谢谢了!
解决方案 »
- 产生的文件名如何能按照时间自动生成
- 关于数据库关键字问题
- 已知字段例如5101,如何查出字段如510102,510101这些之比已知多两个字符的字段
- 请问如何 这样的条件查询 ????????????急!!!!!!!
- 大家帮助分析一下,SQL2000服务器,WINDOWNS任务管理器中SQLSERVER进程占用接近100,客户端非常慢无法进行操作?
- 有一个表,
- 数据库牛人多多,请教下以前的几道存储过程面实题,谢谢!
- 局域网连接数据库
- 英文SQL显示中文的问题
- 过年好!当前,简单的数据库系统用什么好?先谢谢大家。
- java数据库中计算出来的百分比怎么显示在前台页面上
- mysql模型怎么导入数据库
后面就是列转行,用pivot,case 都可以
DECLARE @MAX INT
SELECT @MAX=MAX([顺序])FROM 表名
DECLARE @SQL VARCHAR(8000)
SET @SQL=''
DECLARE @Column VARCHAR(8000)
SET @Column=''
SELECT @SQL=@SQL
+',MIN(CASE WHEN [顺序]='+CAST(number AS VARCHAR(10))+' THEN[内容]END)['+CAST(number AS VARCHAR(10))+']'
,@Column=@Column+',T1.['+CAST(number AS VARCHAR(10))+']'
FROM master..spt_values WHERE [type]='P'AND number>0 AND number<=@MAX
SET @SQL='SELECT T1.ID,T2.[内容][当前内容],ISNULL(T3.[完成时间],T3.[开始时间])[当前时间]'+@Column
+'FROM(SELECT ID,MIN(CASE WHEN[完成时间]IS NULL THEN[顺序]END)[当前内容顺序]'
+',MAX(CASE WHEN[开始时间]IS NOT NULL THEN[顺序]END)[当前时间顺序]'+@SQL
+'FROM 表名 GROUP BY ID)T1 '
+'JOIN 表名 T2 ON T1.ID=T2.ID AND T1.[当前内容顺序]=T2.[顺序]'
+'JOIN 表名 T3 ON T1.ID=T3.ID AND T1.[当前时间顺序]=T3.[顺序]'
PRINT @SQL
EXEC(@SQL)
--静态
SELECT T1.ID
,T2.[内容][当前内容]
,ISNULL(T3.[完成时间],T3.[开始时间])[当前时间]
,T1.[1],T1.[2],T1.[3],T1.[4],T1.[5]
FROM
(SELECT
ID
,MIN(CASE WHEN[完成时间]IS NULL THEN[顺序]END)[当前内容顺序]
,MAX(CASE WHEN[开始时间]IS NOT NULL THEN[顺序]END)[当前时间顺序]
,MIN(CASE WHEN [顺序]=1 THEN[内容]END)[1]
,MIN(CASE WHEN [顺序]=2 THEN[内容]END)[2]
,MIN(CASE WHEN [顺序]=3 THEN[内容]END)[3]
,MIN(CASE WHEN [顺序]=4 THEN[内容]END)[4]
,MIN(CASE WHEN [顺序]=5 THEN[内容]END)[5]
FROM 表名 GROUP BY ID)T1
JOIN 表名 T2 ON T1.ID=T2.ID AND T1.[当前内容顺序]=T2.[顺序]
JOIN 表名 T3 ON T1.ID=T3.ID AND T1.[当前时间顺序]=T3.[顺序]要替换正确哈~
1 A 10
2 A 20
3 B 5
4 C 45
5 A 8
6 C 18
...求每CODE的ID号最大的QTY值
即:
ID CODE QTY
5 A 8
3 B 5
6 C 18