表A 日期 品名 出库时间
2010-07-16 A01 8:01
2010-07-16 A01 15:01
2010-07-16 A01 17:01
2010-05-12 A02 8:02
2010-05-12 A01 8:11
能否能过简单的查询得到如下结果日期 品名 第一次出库时间 第二次出库时间 第三次出库时间 第四次出库时间
2010-07-16 A01 8:01 15:01 17:01 NULL
2010-07-16 A02 8:02 NULL NULL NULL
2010-05-12 A01 8:11.....
2010-07-16 A01 8:01
2010-07-16 A01 15:01
2010-07-16 A01 17:01
2010-05-12 A02 8:02
2010-05-12 A01 8:11
能否能过简单的查询得到如下结果日期 品名 第一次出库时间 第二次出库时间 第三次出库时间 第四次出库时间
2010-07-16 A01 8:01 15:01 17:01 NULL
2010-07-16 A02 8:02 NULL NULL NULL
2010-05-12 A01 8:11.....
解决方案 »
- 用TextBox,Button等自定义ComboBox
- SQL语句获取每个用户的最新信息的问题,在线等,送分~
- SQL中怎样把返回的空值用数字0表示,而且要参加计算
- 请问在表中加入text字段对表会有什么影响?
- 求一组挺难的MS SQL(三天了没搞定),麻烦各位出手
- 看看这句SQL有什么问题?
- 程序日志问题
- 急!急!急!急!在WINDOWS XP如何成功安装SQL SERVER 2000数据库,在线等待?
- 关于sql server数据库链接的问题,请各位多帮忙,急……
- 急急急急 如何用sql 敲出如下的T型账
- 往表中输入数据的时候,输入法不能切换为中文输入法????????SQL 2005
- 求一段语句
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([日期] [nvarchar](10),[品名] [nvarchar](10),[出库时间] [nvarchar](10))
INSERT INTO [tb]
SELECT '2010-07-16','A01','8:01' UNION ALL
SELECT '2010-07-16','A01','15:01' UNION ALL
SELECT '2010-07-16','A01','17:01' UNION ALL
SELECT '2010-07-16','A02','8:02' UNION ALL
SELECT '2010-05-12','A01','8:11'--SELECT * FROM [tb]-->SQL查询如下:
SELECT *
FROM (
SELECT rn=ROW_NUMBER()OVER(PARTITION BY [日期],[品名] ORDER BY CAST( 出库时间 AS DATETIME)),*
FROM tb
) a
PIVOT(MAX(出库时间) FOR rn IN([1],[2],[3],[4])) b
ORDER BY 1
/*
日期 品名 1 2 3 4
---------- ---------- ---------- ---------- ---------- ----------
2010-05-12 A01 8:11 NULL NULL NULL
2010-07-16 A01 8:01 15:01 17:01 NULL
2010-07-16 A02 8:02 NULL NULL NULL(3 行受影响)
*/
select * from table1 where file1='ffdffd' and file2 ='dfdfdf'
如果我对 file1 和file2 分别建立索引
那查询会 用 file1 的索引还是 file2的索引了,还是 都能用上
select * from table1 where file1='ffdffd' and file2 ='dfdfdf'
如果我对 file1 和file2 分别建立索引
那查询会 用 file1 的索引还是 file2的索引了,还是 都能用上
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([日期] [nvarchar](10),[品名] [nvarchar](10),[出库时间] [nvarchar](10))
INSERT INTO [tb]
SELECT '2010-07-16','A01','8:01' UNION ALL
SELECT '2010-07-16','A01','15:01' UNION ALL
SELECT '2010-07-16','A01','17:01' UNION ALL
SELECT '2010-07-16','A02','8:02' UNION ALL
SELECT '2010-05-12','A01','8:11'alter table tb add id intupdate tb
set id=(select count(*) from tb where 日期=t.日期 and 品名=t.品名 and cast(t.出库时间 as datetime)>=cast(出库时间 as datetime))
from tb t
declare @str varchar(4000)select @str=isnull(@str,'')+',max(case when id='+ltrim(number)+' then 出库时间 else null end) ['+ ltrim(number)+']'
from (select distinct number from tb t,master..spt_values m
where t.id=m.number and type='p' and number>0 ) aexec('select 日期,品名'+@str+' from tb group by 日期,品名' )
日期 品名 1 2 3
---------- ---------- ---------- ---------- ----------
2010-05-12 A01 8:11 NULL NULL
2010-07-16 A01 8:01 15:01 17:01
2010-07-16 A02 8:02 NULL NULL
警告: 聚合或其他 SET 操作消除了空值。(3 行受影响)