确定。这是独家新闻。我在一对多的关系中有两张桌子。在表2中,我有三列我希望转换为行数据。为什么?这些将用于与另一个进程(作为数据源)合并以生成文档。请参阅the breakdown 的附件和相关输出。
这是第一个成功获得所需信息的成功查询。
选择 tblClients.fldDRCClientID, fldLastName, e1.fldCreditorName, e1.fldDebtAccountNumber, e1.fldEnrolledDebt 来自tblClients 左连接tblDebtAccountNumber为e1 ON e1.tblClients_fldDRCClientID = tblClients.fldDRCClientID;
答案 0 :(得分:0)
(代表问题作者发布,将其从评论中移出)。
这是我的查询:
SELECT idt.fldDRCClientID
, idt.fldLastName
, COALESCE(grp.fldCreditorName1, '') as fldCreditorName1
, COALESCE(grp.fldDebtAccountNumber1, '') as fldDebtAccountNumber1
, COALESCE(grp.fldEnrolledDebt1, '') as fldEnrolledDebt1
, COALESCE(grp.fldCreditorName2, '') as fldCreditorName2
, COALESCE(grp.fldDebtAccountNumber2, '') as fldDebtAccountNumber2
, COALESCE(grp.fldEnrolledDebt2, '') as fldEnrolledDebt2
, COALESCE(grp.fldCreditorName3, '') as fldCreditorName3
, COALESCE(grp.fldDebtAccountNumber3, '') as fldDebtAccountNumber3
, COALESCE(grp.fldEnrolledDebt3, '') as fldEnrolledDebt3
, COALESCE(grp.fldCreditorName4, '') as fldCreditorName4
, COALESCE(grp.fldDebtAccountNumber4, '') as fldDebtAccountNumber4
, COALESCE(grp.fldEnrolledDebt4, '') as fldEnrolledDebt4
, COALESCE(grp.fldCreditorName5, '') as fldCreditorName5
, COALESCE(grp.fldDebtAccountNumber5, '') as fldDebtAccountNumber5
, COALESCE(grp.fldEnrolledDebt5, '') as fldEnrolledDebt5
, COALESCE(grp.fldCreditorName6, '') as fldCreditorName6
, COALESCE(grp.fldDebtAccountNumber6, '') as fldDebtAccountNumber6
, COALESCE(grp.fldEnrolledDebt6, '') as fldEnrolledDebt6
FROM tblClients idt
LEFT JOIN (
SELECT d.IndividualNumber as IndividualNumber
, MAX(CASE WHEN row = 1 THEN d.fldCreditorName END) AS fldCreditorName1
, MAX(CASE WHEN row = 1 THEN d.fldDebtAccountNumber END) AS fldDebtAccountNumber1
, MAX(CASE WHEN row = 1 THEN d.fldEnrolledDebt END) AS fldEnrolledDebt1
, MAX(CASE WHEN row = 2 THEN d.fldCreditorName END) AS fldCreditorName2
, MAX(CASE WHEN row = 2 THEN d.fldDebtAccountNumber END) AS fldDebtAccountNumber2
, MAX(CASE WHEN row = 2 THEN d.fldEnrolledDebt END) AS fldEnrolledDebt2
, MAX(CASE WHEN row = 3 THEN d.fldCreditorName END) AS fldCreditorName3
, MAX(CASE WHEN row = 3 THEN d.fldDebtAccountNumber END) AS fldDebtAccountNumber3
, MAX(CASE WHEN row = 3 THEN d.fldEnrolledDebt END) AS fldEnrolledDebt3
, MAX(CASE WHEN row = 4 THEN d.fldCreditorName END) AS fldCreditorName4
, MAX(CASE WHEN row = 4 THEN d.fldDebtAccountNumber END) AS fldDebtAccountNumber4
, MAX(CASE WHEN row = 4 THEN d.fldEnrolledDebt END) AS fldEnrolledDebt4
, MAX(CASE WHEN row = 5 THEN d.fldCreditorName END) AS fldCreditorName5
, MAX(CASE WHEN row = 5 THEN d.fldDebtAccountNumber END) AS fldDebtAccountNumber5
, MAX(CASE WHEN row = 5 THEN d.fldEnrolledDebt END) AS fldEnrolledDebt5
, MAX(CASE WHEN row = 6 THEN d.fldCreditorName END) AS fldCreditorName6
, MAX(CASE WHEN row = 6 THEN d.fldDebtAccountNumber END) AS fldDebtAccountNumber6
, MAX(CASE WHEN row = 6 THEN d.fldEnrolledDebt END) AS fldEnrolledDebt6
FROM
(
SELECT @row := CASE WHEN tblClients_fldDRCClientID = @id
THEN @row + 1 ELSE 1 END as row
, @id := tblClients_fldDRCClientID as IndividualNumber
, inf.fldCreditorName
, inf.fldDebtAccountNumber
, inf.fldEnrolledDebt
FROM (SELECT @row := 0, @id := 0) v
, tblDebtAccountNumber as inf
ORDER BY inf.tblClients_fldDRCClientID
) d
GROUP BY d.IndividualNumber
) grp
ON grp.IndividualNumber = idt.fldDRCClientID
;