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'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',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',ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) liKE '4%'
THEN DBO.FUN_GET_工程番号sql(作業票番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NulL END '備考4',ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) liKE '5%'
THEN DBO.FUN_GET_工程番号sql(作業票番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NulL END '備考5',ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) liKE '6%'
THEN DBO.FUN_GET_工程番号sql(作業票番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NulL END '備考6',ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) liKE '7%'
THEN DBO.FUN_GET_工程番号sql(作業票番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NulL END '備考7',ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) liKE '8%'
THEN DBO.FUN_GET_工程番号sql(作業票番号,ROW_NUMBER() OVER(ORDER BY 作業票番号 ASC)) ELSE NulL END '備考8',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
@H_301_2@ 总结以上是内存溢出为你收集整理的sqlserver2008 利用函数列转行实例全部内容,希望文章能够帮你解决sqlserver2008 利用函数列转行实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)