Sql server MS SQL Server查询将多行合并为一行
正在尝试为模拟人员的数据库编写查询。这些人在组织中担任职位,因此他们在职位表中有多个条目。我还加入了包含电子邮件、地址和电话信息的表格 我的原始查询与此类似Sql server MS SQL Server查询将多行合并为一行,sql-server,Sql Server,正在尝试为模拟人员的数据库编写查询。这些人在组织中担任职位,因此他们在职位表中有多个条目。我还加入了包含电子邮件、地址和电话信息的表格 我的原始查询与此类似 SELECT P.ID , N.FIRST , N.MIDDLE , N.LAST , A.AD1 , A.AD2 , A.AD3 , A.CITY , A.STATE , A.ZIP , A.COUNTRY , PH.NUMBER ,
SELECT
P.ID
, N.FIRST
, N.MIDDLE
, N.LAST
, A.AD1
, A.AD2
, A.AD3
, A.CITY
, A.STATE
, A.ZIP
, A.COUNTRY
, PH.NUMBER
, PH.TYPE
, E.TYPE
, E.ADDRESS
FROM
PERSON AS P
JOIN NAME AS N ON P.ID=N.ID,
JOIN ADDRESS AS A ON P.ID=A.ID,
JOIN PHONE AS PH ON P.ID=PH.ID,
JOIN EMAIL AS E ON P.ID=E.ID
我想将POSITION
表连接到此查询上,但我希望将POSITION
表中的每一行附加到查询中的行,而不是连接导致原始查询为POSITION
表中的每一行
position表的查询仅针对第一次查询返回的每一行,select*from position as Pos,其中Pos.ID={p.ID}
其中p.ID来自第一次查询
正常结果应如下所示:
您会如何考虑将订单记录与订单上的项目连接起来。我认为这应该是一个联盟
但当我加入位置表时得到的结果如下:
这可能吗?已经找了好几天了。试试这个,不确定加入条件和列名,假设如下: 个别栏目的更新——假设每个人只有两个职位头衔
SELECT *, SUBSTRING(POS_TITLE,0,CHARINDEX(',',POS_TITLE,0)) as POS1_Title, SUBSTRING(POS_TITLE,CHARINDEX(',',POS)+1,LEN(POS_TITLE)) as POS2_Title
FROM
(
SELECT
P.ID
, N.FIRST
, N.MIDDLE
, N.LAST
, A.AD1
, A.AD2
, A.AD3
, A.CITY
, A.STATE
, A.ZIP
, A.COUNTRY
, PH.NUMBER
, PH.TYPE
, E.TYPE
, E.ADDRESS
,STUFF(
(SELECT ','+title FROM POSITIONS as P WHERE P.PositionId = N.PositionId FOR XML PATH('')),1,1,'') as POS_TITLE
FROM
PERSON AS P
INNER JOIN NAME AS N ON P.ID=N.ID,
INNER JOIN ADDRESS AS A ON P.ID=A.ID,
INNER JOIN PHONE AS PH ON P.ID=PH.ID,
INNER JOIN EMAIL AS E ON P.ID=E.ID
INNER JOIN POSITIONS AS N ON N.ID = A.ID
GROUP BY P.ID
, N.FIRST
, N.MIDDLE
, N.LAST
, A.AD1
, A.AD2
, A.AD3
, A.CITY
, A.STATE
, A.ZIP
, A.COUNTRY
, PH.NUMBER
, PH.TYPE
, E.TYPE
, E.ADDRESS
) as A
请发布示例数据、您尝试过的内容等。此链接应该可以帮助您:我不理解
查询为每一行提供单独的行
您是指列吗?添加一些数据样本和预期结果是的,这是可能的。这取决于您是想要一列位置值类似于a,还是想要一个。。。如位置1、位置2等。。。正如@Horaciux所述,样本数据和预期输出。不管怎样,你的问题是与我的评论相关的两个问题中的一个问题的重复。请分享你在“位置”表中使用的连接条件。正在制作小提琴供大家查看。无法将实际数据用于匿名目的。这有效!我可以让所有的专栏都有,但有个问题。如果您希望每个标题都有单独的字段,而不是创建一个逗号分隔的列表,您将如何做到这一点?哦,对不起,没有注意到您想要的输出。然后您可能需要PIVOT
或CASE当语句时,我正在处理它。@ChrisRutherford,检查我的更新,每个人最多有2个位置,不要认为它可能是PIVOT:(在这种情况下,最好是用逗号分隔的列表。有大量的职位供你选择。)people@ChrisRutherford,是的,唯一的问题是位置总数是一个动态值。