首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:从多行(Tbl 2)填充单行(Tbl 1);跨DB

SQL:从多行(Tbl 2)填充单行(Tbl 1);跨DB
EN

Stack Overflow用户
提问于 2009-07-29 15:31:12
回答 1查看 872关注 0票数 0

我已经在我的主数据库中创建了一个名为tblGlobalIDMapping的表,它将为所有条目分配一个GUID,并存储应用程序中的其他3个主ID,以提供单个ID存储库。

新表的结构如下-->

代码语言:javascript
复制
AppGlobalID     uniqueidentifier     NoNulls
PersonID        int                  NoNulls
DRIMaster       int                  Nulls
DRIClient       int                  Nulls

我需要的信息在另一个DB (同一服务器)中的一个表中,该表具有以下部分结构-->

代码语言:javascript
复制
PersonID                int             NoNulls
ApplicationID           tinyint         NoNulls
PersonApplicationID     varchar(14)     NoNulls

对于每个应用,在第二表1中表示一个人(ID# 13579)。ApplicationID列存储一个数字,1表示DRIMaster,6表示DRIClient,它告诉您PersonApplicationID中的ID#是做什么用的。

我需要从该表批量复制/插入到我的新表中,但我只想要1行记录新表中的3个主ID。

这就是我到目前为止所拥有的,但它为每个PersonID返回一行。

代码语言:javascript
复制
SELECT PersonID, 
    CASE
        WHEN ApplicationID = 1
        THEN PersonApplicationID
    END AS 'DRIMaster', 
    CASE
        WHEN ApplicationID = 6
        THEN PersonApplicationID
    END AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)

这将返回以下内容-->

代码语言:javascript
复制
PersonID  DRIMaster   DRIClient
_______________________________
108574    71163       NULL
108574    NULL        71163
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-29 15:44:14

聚合会忽略空值,所以....

代码语言:javascript
复制
SELECT PersonID, 
       Min(CASE
                WHEN ApplicationID = 1
                THEN PersonApplicationID
        END) AS 'DRIMaster', 
       Min(CASE
                WHEN ApplicationID = 6
                THEN PersonApplicationID
        END) AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)
Group By PersonId
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1201128

复制
相关文章

相似问题

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