SQL拉取数据时出现一对多关系问题

时间:2013-06-18 08:12:26

标签: tsql stored-procedures sql-server-2008-r2

我遇到查询问题: enter image description here

对于任何给定的IntakeQCID,我有很多IntakeQCDetailID和很多问题和答案。现在我需要选择每个问题和答案在一个单独的列上。

这样的工作:

SSELECT     IntakeQC.IntakeQCID, IntakeQC.PalletID, Max(CASE WHEN QCProductQuestions.QCQuestionID = 106 THEN CAST(Answer AS varchar(10)) ELSE '' END) AS ArrivalTemperature
FROM         QCProductQuestions INNER JOIN
                      IntakeQCDetails ON QCProductQuestions.QCProductQuestionID = IntakeQCDetails.QCProductQuestionID INNER JOIN
                      IntakeQC ON IntakeQCDetails.IntakeQCID = IntakeQC.IntakeQCID INNER JOIN
                      QCQuestions ON QCProductQuestions.QCQuestionID = QCQuestions.QCQuestionID
WHERE     (QCProductQuestions.Intake = 1) AND (IntakeQC.IntakeQCID = 9413) AND (IntakeQCDetails.Answer <> '')
Group By IntakeQC.IntakeQCID, IntakeQC.PalletID

这是输出:

enter image description here

如果我不这样做,如果特定IntakeQCID有20个QC问题,我会获得20行数据而我只需要一行......

然而问题是我的范围内有170 + QCQuestions,我必须为每一个做这件事。是否有更优雅的方式实现这一目标?

任何帮助,想法或建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

我相信这可以帮到你http://sqlandme.com/2011/04/27/tsql-concatenate-rows-using-for-xml-path/ 也许你可以为表格提供一个DDL,这样我们就可以更容易地测试你的代码和其他东西