• Sql的自定义聚合函数,挺费劲。


    想实现把字符串合并的聚合函数。关键是在视图中不能定义变量(在函数中可以定义变量)。不能进行复杂的多语句操作。

    但也有解决方案 见: http://www.cnblogs.com/yiyanxiyin/archive/2008/09/28/1230524.html

    一条语句出结果,挺费劲,我的实现。

    CREATE TABLE [dbo].[PowerAction](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Action] [varchar](50) NULL,
    [ControllerID] [int] NULL,
    CONSTRAINT [PK_RoleAction] PRIMARY KEY CLUSTERED
    (
    [ID] ASC
    )
    ON [PRIMARY]
    )
    ON [PRIMARY]

    GO


    CREATE TABLE [dbo].[PowerButton](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [ActionID] [int] NULL,
    [Button] [varchar](50) NULL,
    CONSTRAINT [PK_RoleButton] PRIMARY KEY CLUSTERED
    (
    [ID] ASC
    )
    ON [PRIMARY]
    )
    ON [PRIMARY]

    GO

    SELECT *
    FROM(
    select distinct a.ID ,a.[Action]
    from PowerAction as a
    left join PowerButton as b on (b.actionid = a.id)

    ) t
    OUTER APPLY(
    SELECT
    [Button]= STUFF(REPLACE(REPLACE(
    (
    select isnull(b.Button,'') as Button
    from PowerAction as a
    left join PowerButton as b on (b.actionid = a.id)

    WHERE a.id = t.id
    FOR XML AUTO
    ),
    '<a Button="', ','), '"/>', ''), 1, 1, '')
    )N

    表值函数定义方法:

    create function test(@i int )
    returns @retVal table(id int ,val varchar(3000) )
    as
    begin
    select * from @retVal ;
    return ;
    end ;

    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    lambda表达式
    解读Raft(一 算法基础)
    译《Time, Clocks, and the Ordering of Events in a Distributed System》
    如何在MQ中实现支持任意延迟的消息?
    读Kafka Consumer源码
    2017上海QCon之旅总结(下)
    2017上海QCon之旅总结(中)
    2017上海QCon之旅总结(上)
    什么是WAL?
    Push or Pull?
  • 原文地址:https://www.cnblogs.com/newsea/p/1802415.html
Copyright © 2020-2023  润新知