私は「カスタム」フィールド情報をすべて1つのフィールド(列)に格納するCOTSデータベースを持っています。私は単一のレコードの選択された情報を引き出すためにクエリを作成しましたが、ソート/集計を行うことができるように抽出された各行から列を作成する必要があります。サブクエリSQL Server 2008の列に行
SELECT DISTINCT CFV.Value, CFV.CustomRecordsetId, CFV.CustomFieldId, CF.Name, F.id, F.ShortFileName, F.DateFileOpen,
(select P.Name from [Amicus].[dbo].[People] P where (cf.name = 'MedLienLKUPMedProvider1' AND Convert(char,P.Id) = CFV.Value)) as ProviderName,
(select P.DefaultPhone from [Amicus].[dbo].[People] P where (cf.name = 'MedLienLKUPMedProvider1' AND Convert(char,P.Id) = CFV.Value)) as ProviderPhone
FROM [Amicus].[dbo].[CustomFieldValue] CFV
inner join [Amicus].[dbo].[CustomField] CF on cfv.customfieldId=cf.id
inner join [Amicus].[dbo].[CustomRecordset] CRS on CRS.Id=CFV.CustomRecordsetId
inner join [Amicus].[dbo].[File] F on F.Id=CRS.RecordId
WHERE F.Id = {?Pm-F.Id}
AND CF.Id = CFV.CustomFieldId
AND CF.CustomFieldTypeId <> 23
AND CRS.customrecordid = 8
AND (cf.name = 'MedLienAcctNo' OR cf.name = 'MedLienAmountBilled1' OR cf.name = 'MedLienAmt' OR cf.name = 'MedLienAmtDue' OR cf.name = 'MedLienDateRec' OR cf.name = 'MedLienDiagAmt' OR cf.name = 'MedLienListTF1' OR cf.name = 'MedLienLKUPMedProvider1' OR cf.name = 'MedLienNotes' OR cf.name = 'MedLienServFromDate1' OR cf.name = 'MedLienServToDate1' OR cf.name = 'MedLienTreatAmt' OR cf.name = 'MedLienDescription')
私は、独自の列見出しにcf.nameルックアップのそれぞれを転置し、可能な場合、サブクエリを維持する必要があります:
は、ここでのクエリです。
以下は動作しますが、サブクエリは含まれません。
SELECT
MAX(CFV.CustomRecordsetId) AS RecordNo, MAX(CFV.CustomFieldId) AS CFId, MAX(F.id) AS FileId, MAX(F.ShortFileName) AS SFN, MAX(F.DateFileOpen) AS DateOpened,
MAX(CASE WHEN cf.name = 'EACreditorLU' THEN CFV.Value END) AS Provider,
MAX(CASE WHEN cf.name = 'EADebtAmtOwed' THEN CFV.Value END) AS AmtOwed,
MAX(CASE WHEN cf.name = 'EADebtCategory' THEN CFV.Value END) AS Category,
MAX(CASE WHEN cf.name = 'EADebtClassClaim' THEN CFV.Value END) AS Class,
MAX(CASE WHEN cf.name = 'EADebtPer' THEN CFV.Value END) AS Per,
MAX(CASE WHEN cf.name = 'EADebtStatus' THEN CFV.Value END) AS Status
FROM [Amicus].[dbo].[CustomFieldValue] CFV
inner join [Amicus].[dbo].[CustomField] CF on cfv.customfieldId=cf.id
inner join [Amicus].[dbo].[CustomRecordset] CRS on CRS.Id=CFV.CustomRecordsetId
inner join [Amicus].[dbo].[File] F on F.Id=CRS.RecordId
WHERE F.Id = {?pmFileId}
AND CF.Id = CFV.CustomFieldId
AND CF.CustomFieldTypeId <> 23
AND CRS.customrecordid = 24
GROUP BY CFV.CustomRecordsetId
私はガスがなくなりましたので、どんな助力があれば幸いです。
ありがとうございました。
もしあなたがコードやXMLを投稿するなら、テキストエディタでこれらの行をハイライトして、エディタツールバーの "code"ボタン(101 010)をクリックしてください。 –