1. 前提固定行数 如:固定前10行等。

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FUN_GET_工程番号SQL]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
 DROP FUNCTION [dbo].[FUN_GET_工程番号SQL]
 GO-- =============================================
 -- Description: <GET_工程番号SQL>
 -- Author:  <>
 -- Create date: <2011/11/29>
 -- =============================================
  CREATE  FUNCTION [dbo].[FUN_GET_工程番号SQL]
  (
   @IN_作業票番号 VARCHAR(15),
   @IN_工程番号 NUMERIC(3),
   @IN_連番 INT
  )
   RETURNS   VARCHAR(4000)   
   AS
   BEGIN
           DECLARE @SQL VARCHAR(4000)   
           SET @SQL = ''
           SELECT @SQL = @SQL+CONVERT(NVARCHAR,@IN_連番-1)++'='+CONVERT(NVARCHAR,工程番号)
           FROM VTプロダクションコントロール工程 AS T
           WHERE T.作業票番号=@IN_作業票番号 AND 工程番号 = @IN_工程番号   
           RETURN  @SQL
   END
  GO 
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'FUN_LIST_工程番号行表示') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
 DROP FUNCTION [dbo].[FUN_LIST_工程番号行表示]
 GO-- =============================================
 -- Description: <LIST_工程番号行表示>
 -- Author:  <>
 -- Create date: <2011/11/29>
 -- =============================================
 CREATE FUNCTION [dbo].[FUN_LIST_工程番号行表示]
 (
   @IN_作業票番号 VARCHAR(15), --作業票番号
   @IN_TOP件数 VARCHAR(3)      --TOP件数
 )
 RETURNS TABLE
 AS
 RETURN
 (
  SELECT 
  REPLACE(MAX(備考0),'0=','') AS 備考1,
  REPLACE(MAX(備考1),'1=','') AS 備考2,
  REPLACE(MAX(備考2),'2=','') AS 備考3,
  REPLACE(MAX(備考3),'3=','') AS 備考4,
  REPLACE(MAX(備考4),'4=','') AS 備考5,
  REPLACE(MAX(備考5),'5=','') AS 備考6,
  REPLACE(MAX(備考6),'6=','') AS 備考7,
  REPLACE(MAX(備考7),'7=','') AS 備考8,
  REPLACE(MAX(備考8),'8=','') AS 備考9,
  REPLACE(MAX(備考9),'9=','') AS 備考10
  FROM (
  SELECT TOP (CONVERT(INT,@IN_TOP件数))
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '0%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考0',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '1%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考1',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '2%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考2',
   CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '3%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考3',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '4%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考4',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '5%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考5',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '6%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考6',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '7%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考7',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '8%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考8',
  CASE WHEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) LIKE '9%'
  THEN DBO.FUN_GET_工程番号SQL(作業票番号,工程番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NULL END '備考9'
  FROM VTプロダクションコントロール工程 WHERE 作業票番号=@IN_作業票番号
 ) A
 )GO