首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TSQL仅在满足另一列中的条件时才对列进行分组

TSQL仅在满足另一列中的条件时才对列进行分组
EN

Stack Overflow用户
提问于 2018-01-26 02:20:34
回答 2查看 41关注 0票数 0

此查询的结果具有多个transactionCodes。我只想在applyToLineID = '0‘时对transactionCodes进行分组。换句话说,如果applyToLineID不是0,则不应对交易代码进行分组。我认为使用done语句可以做到这一点,但我不能让它工作。下面你会发现两段代码,第一段是我的原始代码,第二段是原始代码加上我尝试执行上述分组。

原始代码:

代码语言:javascript
运行
复制
SELECT 
ar.arlineitemid,
ar.siteid,
ar.transactioncode,
ar.description,
ar.amount,
ar.balance,
ar.applytolineid,
ar.posteddate,
TC.transactioncode,
TC.arlineitemid

FROM tswdata.dbo.t_arlineitem as AR     

left JOIN

(
SELECT

ar2.transactioncode,
ar2.arlineitemid

FROM tswdata.dbo.t_arlineitem as ar2    

WHERE  

ar2.SiteID = '101'
AND
(AR2.Transactioncode LIKE 'A%'  And
AR2.Transactioncode NOT LIKE 'AS%' And
AR2.Transactioncode NOT LIKE 'AF%' And
AR2.Transactioncode NOT LIKE 'AX%')
) TC

ON
ar.applytolineid = TC.arlineitemid

WHERE  

ar.SiteID = '101'
AND
AR.Transactioncode <> 'A18'

我尝试执行条件分组的代码:

代码语言:javascript
运行
复制
SELECT 
ar.arlineitemid,
ar.siteid,
ar.transactioncode,
ar.description,
ar.amount,
ar.balance,
ar.applytolineid,
ar.posteddate,
TC.transactioncode,
TC.arlineitemid

FROM tswdata.dbo.t_arlineitem as AR     

left JOIN

(
SELECT

ar2.transactioncode,
ar2.arlineitemid

FROM tswdata.dbo.t_arlineitem as ar2    

WHERE  

ar2.SiteID = '101'
AND
(AR2.Transactioncode LIKE 'A%'  And
AR2.Transactioncode NOT LIKE 'AS%' And
AR2.Transactioncode NOT LIKE 'AF%' And
AR2.Transactioncode NOT LIKE 'AX%')
) TC

ON
ar.applytolineid = TC.arlineitemid

WHERE  

ar.SiteID = '101'
AND
AR.Transactioncode <> 'A18'

GROUP BY 
ar.transactioncode,

HAVING
ar.ApplyTolineId = '0'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-26 02:55:39

您可以合并两个查询:一个查询包括除事务代码为0的项目之外的所有内容,另一个查询仅包含事务代码为0的项目的聚合。

票数 2
EN

Stack Overflow用户

发布于 2018-01-26 03:07:09

考虑像这样分解你的问题:

您有两组要查看的数据- applyToLineID = '0'的数据集和applyToLineID <> '0'的数据集。

您有一个查询,它提取两个集合都将用来评估applyToLineID逻辑的原始信息。

您对此的解决方案可能如下所示:

代码语言:javascript
运行
复制
SELECT * FROM
    (select common data, Grouped Values from (common_query) where applyToLineID = 0)
UNION
SELECT * FROM
    (select common data, unGrouped Values from (common_query) where applyToLineID <> 0)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48449478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档