表一 FNO FScrq FCcsj FBcfs FTpz
1 2013-04-27 08:00 1 C10
2 2013-05-01 12:00 2 C10表二
FNO FYlmc FSysl
1 水泥 5
1 砂子 3
2 水泥 5
2 石子 2要得到如下结果
标号 方量 水泥 砂子 石子
C10 3 10 3 2
说明: 材料名称不是固定的 查询时间范围根据需求选择
1 2013-04-27 08:00 1 C10
2 2013-05-01 12:00 2 C10表二
FNO FYlmc FSysl
1 水泥 5
1 砂子 3
2 水泥 5
2 石子 2要得到如下结果
标号 方量 水泥 砂子 石子
C10 3 10 3 2
说明: 材料名称不是固定的 查询时间范围根据需求选择
(
fno VARCHAR(5),
fscrq VARCHAR(20),
fccsj VARCHAR(20),
fbcfs VARCHAR(5),
ftpz VARCHAR(20)
) CREATE TABLE table2
(
fno VARCHAR(5),
fyimc VARCHAR(20),
fsysl INT
) INSERT INTO table1
SELECT '1',
'2013-04-27',
'08:00',
'1',
'c10'
UNION ALL
SELECT '2',
'2013-05-01',
'12:00',
'2',
'c10' insert into table2
select '1','水泥',5
union all
select '1','砂子',3
union all
select '2','水泥',5
union all
select '2','石子',2IF Object_id('tempdb..#dual')IS NOT NULL
DROP TABLE #dual SELECT ftpz,
Sum(fsysl) AS num,
fyimc
INTO #dual
FROM table1 a
INNER JOIN table2 b
ON a.fno = b.fno
GROUP BY ftpz,
fyimc IF Object_id('tempdb..#temp')IS NOT NULL
DROP TABLE #temp IF Object_id('tempdb..##dual')IS NOT NULL
DROP TABLE ##dual DECLARE @sql0 VARCHAR(8000) SELECT id=IDENTITY(int, 0, 1),
groupid=0,
值= ',max(case fyimc when ''' + fyimc
+ ''' then num else 0 end ) [' + fyimc + ']'
INTO #temp
FROM (SELECT DISTINCT fyimc
FROM #dual) AS a UPDATE #temp
SET groupid = id / 100SELECT @sql0 = ''
SELECT @sql0 = @sql0 +值 from #temp
WHERE groupid = 0 EXEC('select * into ##dual from (select ftpz,count(*) as fangliang ' +@sql0+
' from #dual group by ftpz )a') SELECT *
FROM ##dual