- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下查询:
WITH cteCountryLanguageMapping AS (
SELECT * FROM (
VALUES
('Spain', 'English'),
('Spain', 'Spanish'),
('Sweden', 'English'),
('Switzerland', 'English'),
('Switzerland', 'French'),
('Switzerland', 'German'),
('Switzerland', 'Italian')
) x ([Country], [Language])
)
SELECT
[Country],
CASE COUNT([Language])
WHEN 1 THEN MAX([Language])
WHEN 2 THEN STRING_AGG([Language], ' and ')
ELSE STRING_AGG([Language], ', ')
END AS [Languages],
COUNT([Language]) AS [LanguageCount]
FROM cteCountryLanguageMapping
GROUP BY [Country]
| Country | Languages | LanguageCount
--+-------------+-------------------------------------------+--------------
1 | Spain | Spanish and English | 2
2 | Sweden | English | 1
3 | Switzerland | French, German, Italian, English | 4
and
分隔):
| Country | Languages | LanguageCount
--+-------------+-------------------------------------------+--------------
1 | Spain | Spanish and English | 2
2 | Sweden | English | 1
3 | Switzerland | French and German and Italian and English | 4
SELECT y, STRING_AGG(z, '+') AS STRING_AGG_PLUS, STRING_AGG(z, '-') AS STRING_AGG_MINUS
FROM (
VALUES
(1, 'a'),
(1, 'b')
) x (y, z)
GROUP by y
| y | STRING_AGG_PLUS | STRING_AGG_MINUS
--+---+-----------------+-----------------
1 | 1 | a+b | a+b
最佳答案
是的,这是一个错误 (tm),存在于 SQL Server 2017 的所有版本中(截至撰写时)。它已在 Azure SQL Server 和 2019 RC1 中修复。具体来说,优化器中执行公共(public)子表达式消除的部分(确保我们不会计算不必要的表达式)不正确地考虑了 STRING_AGG(x, <separator>)
形式的所有表达式。只要 x
相同匹配,无论如何<separator>
是,并将这些与查询中的第一个计算表达式统一起来。
一种解决方法是确保 x
通过对其执行某种(近)身份转换不匹配。由于我们正在处理字符串,连接一个空的就可以了:
SELECT y, STRING_AGG(z, '+') AS STRING_AGG_PLUS, STRING_AGG('' + z, '-') AS STRING_AGG_MINUS
FROM (
VALUES
(1, 'a'),
(1, 'b')
) x (y, z)
GROUP by y
关于sql - STRING_AGG 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533487/
我有以下查询: 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
我是一名优秀的程序员,十分优秀!