首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >透视查询辅助

透视查询辅助
EN

Stack Overflow用户
提问于 2013-02-15 23:19:09
回答 4查看 38关注 0票数 0
代码语言:javascript
复制
Job Batch id   Company Outlet Id   Clearance required   Hanky required 
1              10                  T                    T

现在,我想要以下内容

代码语言:javascript
复制
Job Batch id   Company Outlet ID    Reason    
1              10                   Clearance Required , Hanky Required 

我的大脑已经冻结了,所以需要帮助吗?

如何构造这个非透视查询?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-15 23:35:51

这就对了--就像这样组合你的列。我正在使用内容删除开头的逗号:

代码语言:javascript
复制
select JobBatchId, 
  CompanyOutletId,
  STUFF(
    ISNULL(CASE WHEN ClearanceRequired = 'T' THEN ',Clearance Required' END, '')  +
    ISNULL(CASE WHEN HankyRequired = 'T' THEN ',Hanky Required' END, '') 
    , 1, 1, '') Reasons
from YourTable

还有SQL Fiddle

票数 1
EN

Stack Overflow用户

发布于 2013-02-15 23:32:33

我建议不要在Sql查询中的单个列(Reason)中放入多个值,而是将其留给表示层,如果您希望以这种方式查看数据的话……

但下面是如何在Sql中执行此操作:

代码语言:javascript
复制
SELECT
    [Job Batch Id],
    [Company Outlet Id],
    CASE 
        WHEN [Clearance Required] = 'T' 
        THEN 'Clearance Required' 
        ELSE '' END +
    -- Determine if the comma is needed or not...
    CASE 
        WHEN [Clearance Required] = 'T' 
            AND [Hanky Required] = 'T' 
        THEN ' , ' 
        ELSE '' END +
    CASE
        WHEN [Hanky Required] = 'T' 
        THEN 'Hanky Required' 
        ELSE '' END AS Reason
FROM YourTable
票数 1
EN

Stack Overflow用户

发布于 2013-02-15 23:35:15

尝试:

代码语言:javascript
复制
select [Job Batch id], [Company Outlet Id],
       case [Clearance required]
            when 'T' then 'Clearance Required' + 
                case [Hanky required] when 'T' then ' , ' else '' end
       else ''
       end + case [Hanky required] when 'T' then 'Hanky Required' else '' end as [Reason]
from theTable
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14897761

复制
相关文章

相似问题

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