首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示水平sql 1列的值?

如何显示水平sql 1列的值?
EN

Stack Overflow用户
提问于 2022-06-11 15:22:04
回答 1查看 65关注 0票数 1

我对sql知之甚少,但我正在尝试创建一个基于Confluence宏的过滤器的sql表。

我有两个表,我不知道如何编写sql来显示我所需要的。

表名= T1

代码语言:javascript
复制
| Key  | Title | Developer | Links               |
| ---- | ----- | --------- | ------------------- |
| RD-1 | Gray  | Jon Cruz  | PD-2, LD-4          |
| RD-2 | Blue  | Drew Lee  | PD-30, LD-12, PD-23 |

表名= T2

代码语言:javascript
复制
| Key   | Assignee   | Links       |
| ----- | ---------- | ----------- |
| PD-30 | Kurt Penn  | RD-2        |
| PD-2  | Jury Souk  | RD-1, LD-4  |
| LD-4  | Grace Chen | RD-1, PD-2  |
| LD-12 | Gram Bron  | RD-2, PD-23 |
| PD-23 | Peter Tiu  | RD-2, LD-12 |

由此产生的表格应是:

代码语言:javascript
复制
| Key  | Title | Developer | PD Assignee          | LD Assignee |
| ---- | ----- | --------- | -------------------- | ----------- |
| RD-1 | Gray  | Jon Cruz  | Jury Souk            | Grace Chen  |
| RD-2 | Blue  | Drew Lee  | Kurt Penn, Peter Tiu | Gram Bron   |

通过我的尝试,它显示了RD-1和RD-2的多行。

我当时所做的是为PD和LD拥有单独的表,并使用多个左联接(如下面所示),但希望限制表的数量,所以我想请求您的帮助。

代码语言:javascript
复制
SELECT 
    T1.Key, T1.Title, T1.Developer, T2.'Assignee' PD Assignee, 
    T3.'Assignee' 'PD2 Assignee', T4.'Assignee' 'LD Assignee',
    
FROM 
    T1 LEFT JOIN T2 ON T1.'Key' IN T2.'Links'
    LEFT JOIN T3 ON T1.'Key' IN T3.'Links'
    LEFT JOIN T4 ON T1.'Key' IN T4.'Links';

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-06-12 08:21:36

如果你不喜欢加入,你可以试试这样的方法)。所以,如果是的话,你可以把这个标记为答案。

代码语言:javascript
复制
SELECT 
    T1.[Key]
    ,T1.[Title]
    ,T1.[Developer]
    ,[PD Assignee]= (
                     SELECT stuff
                           (
                                  (
                                   SELECT ','+ T2.[Assignee] 
                                   FROM T2  
                                   WHERE T2.[Links] LIKE ('%' + T1.[Key] + '%') AND T2.[Key] LIKE '%PD%' 
                                   FOR xml PATH('')
                                   )
                                   , 1, 1, ''
                           )
                    )
    ,[LD Assignee]= (
                     SELECT stuff
                           (
                                  (
                                   SELECT ','+ T2.[Assignee] 
                                   FROM T2  
                                   WHERE T2.[Links] LIKE ('%' + T1.[Key] + '%') AND T2.[Key] LIKE '%LD%' 
                                   FOR xml PATH('')
                                   )
                                   , 1, 1, ''
                           )
                    )
FROM T1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72585574

复制
相关文章

相似问题

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