如何在T-SQL中累积值?AFAIK没有ARRAY类型.
我想重新使用同一查询中的值,如使用array_agg()在此PostgreSQL示例中演示的那样.
SELECT a[1] || a[i] AS foo
,a[2] || a[5] AS bar -- assuming we have >= 5 rows for simplicity
FROM (
SELECT array_agg(text_col ORDER BY text_col) AS a
,count(*)::int4 AS i
FROM tbl
WHERE id between 10 AND 100
) x
Run Code Online (Sandbox Code Playgroud)
我如何用T-SQL最好地解决这个问题?
我能想出的最好的是两个CTE和子选择:
;WITH x AS (
SELECT row_number() OVER (ORDER BY name) AS rn
,name AS a
FROM #t
WHERE id between 10 AND 100
), i AS (
SELECT count(*) AS …Run Code Online (Sandbox Code Playgroud) 我想知道如何在函数内使用动态查询。我尝试了很多方法,但是,当我尝试编译我的函数时,会显示一条消息 SQL 42601。
我使用的代码:
CREATE OR REPLACE FUNCTION prc_tst_bulk(sql text)
RETURNS TABLE (name text, rowcount integer) AS
$$
BEGIN
WITH v_tb_person AS (return query execute sql)
select name, count(*) from v_tb_person where nome like '%a%' group by name
union
select name, count(*) from v_tb_person where gender = 1 group by name;
END
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息:
ERROR: syntax error at or near "return"
LINE 5: WITH v_tb_person AS (return query execute sql)
Run Code Online (Sandbox Code Playgroud)
我尝试使用:
WITH v_tb_person AS (execute sql)
WITH v_tb_person …Run Code Online (Sandbox Code Playgroud) arrays ×1
bulkinsert ×1
database ×1
dynamic-sql ×1
plpgsql ×1
postgresql ×1
sql-server ×1
t-sql ×1