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