我遇到查询问题:
对于任何给定的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
这是输出:
如果我不这样做,如果特定IntakeQCID
有20个QC问题,我会获得20行数据而我只需要一行......
然而问题是我的范围内有170 + QCQuestions
,我必须为每一个做这件事。是否有更优雅的方式实现这一目标?
任何帮助,想法或建议将不胜感激。
答案 0 :(得分:0)
我相信这可以帮到你http://sqlandme.com/2011/04/27/tsql-concatenate-rows-using-for-xml-path/ 也许你可以为表格提供一个DDL,这样我们就可以更容易地测试你的代码和其他东西