- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我提出了一个查询,以在 Postgress 中使用 STRING_AGG
基于条件语句创建串联字符串。这工作得很好,但我也想在不复制 CASE
的情况下对结果进行排序。
这是我现在拥有的:
SELECT
STRING_AGG(distinct name, ', ' ORDER BY name),
STRING_AGG(
DISTINCT
CASE WHEN something = true THEN 'type1'
WHEN something_else = true THEN 'type2'
ELSE 'type3'
END, ', '
ORDER BY
CASE WHEN something = true THEN 'type1'
WHEN something_else = true THEN 'type2'
ELSE 'type3'
END
)
from organisations
..但是我想做这样的事情来避免重复的代码并从我的查询中删除行和复杂性但是我不知道如何让它工作,这是假代码显然不起作用,但你明白了:
SELECT
STRING_AGG(distinct name, ', ' ORDER BY name) names,
STRING_AGG(
DISTINCT (
CASE WHEN something = true THEN 'type1'
WHEN something_else = true THEN 'type2'
ELSE 'type3'
END
) as types, ', ' ORDER BY types) types
from organisations
最佳答案
您不需要 string_agg()
。你可以改为:
SELECT STRING_AGG(distinct name, ', ' ORDER BY name) names,
CONCAT_WS(',',
(CASE WHEN SUM( (something = true)::int ) > 0 THEN 'type1'),
(CASE WHEN SUM( (not (something = true) )::int ) > 0 THEN 'type2')
) as types
FROM organisations o;
您可能过度简化了查询,但对于您提供的内容,第二部分不需要 string_agg(distinct)
。
关于sql - 在 Postgres STRING_AGG 中对条件数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49842845/
我有以下查询: WITH cteCountryLanguageMapping AS ( SELECT * FROM ( VALUES ('Spain',
我尝试在条件生成器中创建一个函数,但执行时得到以下结果。 CriteriaBuilder builder = manager.getCriteriaBuilder(); CriteriaQue
我已下载并安装了 SQL Server 2016。当我尝试使用 STRING_AGG 函数时,收到此错误。这是我的代码: SELECT STRING_AGG(cast(FieldNumber AS V
我运行以下查询 string_agg(DISTINCT grades, '|'),它按 01|02|03|04|05|KG|PK 的顺序执行并输出我的结果。 如何以这种方式重新排列 PK|KG|01|
我想像这样限制 string_agg 结果:- SELECT string_agg(name, ',') FROM table_a WHERE 'condition' LIMIT 5 但是限制部分不起
我有一个查询,在某个时候有两个聚合: string_agg(requirements, '@') as req, string_agg(name, ',') as name 稍后在代码中,我拆分了聚合
我有以下选择 $repairs = DB::select(DB::raw(' select r.id repair_id, w.name, w.surname
我有关系数据库并且想使用 string_agg() 因为它似乎符合我的需要。 我想要: product_id | quiz_id -----------+---------- 1 |
我的 MSSQL 服务器中有一张表,我们称之为 blogPost .我还有两个标签表,让我们称它们为 fooTag和 barTag .标签表用于标记 blogPost结构相同的表。 blogPost
我在 Bigquery 中遇到了 STRING_AGG 问题。 我想: SELECT id, institution, COUNT(DISTINCT institution) OVER (PA
我的查询如下: select u.Id, STRING_AGG(sf.Naziv, ', ') as 'Ustrojstvena jedinica', ISNULL(CONVE
我有一个像这样的表#tmp: recid DefaultDimension DefaultDimensionName line_no 5637423499 Default
我在使用 STRING_AGG 并使用定界符内的表达式时遇到了一个非常奇怪的行为。结果是偏移的(即下一次迭代显示在分隔符所在的位置)。 我有一个包含社区名称的列,我试图将它们连接成一个字符串,以便稍后
我正在尝试按照他们登录的顺序生成一串名称。我有可用的代码,但它很丑陋,我确信我错过了一个更直接的方法。 目标,按照上次登录的顺序返回一串不同的用户名。 我先列出姓名和日期。 我为每个名字选择了最近的一
我用一个函数解决了这个问题,我喜欢我的解决方案,但我想知道是否有一种方法可以不使用函数来解决这个问题。事情是这样的: 有四个表与此相关: entities:系统的实体(租户) members:一个实体
如何对转换后的字段进行排序。有类似的问题,但是我不知道为什么它对我不起作用 -- 'number' 字段是一个整数 string_agg(distinct cast(number as varchar
我正在尝试运行此查询 SELECT u.*, string_agg(CAST(uar.roleid AS VARCHAR(100)), ',') AS roleids, string_agg(CAS
我有三个表。 Students student_id | name 1 Rhon Subjects subject_id | subject_name | student_id
下面的string_agg函数是否可以限制元素个数? string_agg(distinct(tag),', ') 最佳答案 还有两种方式。 1) 从行创建一个数组,限制它,然后连接成字符串: SE
我有一张 table : CREATE TABLE tblproducts ( productid integer, product character varying(20) ) 随着行数: INS
我是一名优秀的程序员,十分优秀!