Hello again,
I managed to find a simple solution that seems working on sample tables.
;WITH Final_TB AS
(
SELECT X.SAMPLE_ID, X.AntiBio, #TestTb1.P1, #TestTb1.P2, #TestTb1.P3, #TestTb1.P4 FROM
(
SELECT [Sample_ID],'AB1' AS [AntiBio]
FROM #TestTb2 WHERE [AB1] = '3'
UNION ALL
SELECT [Sample_ID],'AB2' AS [AntiBio]
FROM #TestTb2 WHERE [AB2] = '3'
UNION ALL
SELECT [Sample_ID],'AB3' AS [AntiBio]
FROM #TestTb2 WHERE [AB3] = '3'
UNION ALL
SELECT [Sample_ID],'AB4' AS [AntiBio]
FROM #TestTb2 WHERE [AB4] = '3'
) X JOIN #TestTb1 ON X.[Sample_ID] = #TestTb1.[Sample_ID]
)
SELECT AntiBio, PCR, COUNT(1) AS [Freq.]
FROM
(
SELECT [Sample_ID], [AntiBio], 'P1' AS [PCR]
FROM Final_TB WHERE [P1] = '1'
UNION ALL
SELECT [Sample_ID], [AntiBio], 'P2' AS [PCR]
FROM Final_TB WHERE [P2] = '1'
UNION ALL
SELECT [Sample_ID], [AntiBio], 'P3' AS [PCR]
FROM Final_TB WHERE [P3] = '1'
UNION ALL
SELECT [Sample_ID], [AntiBio], 'P4' AS [PCR]
FROM Final_TB WHERE [P4] = '1'
) Y
GROUP BY Antibio, PCR ORDER BY Antibio, PCR
It returns the expected table. However, as I mentioned with too many variables (the variable numbers are dynamic), I search for a more flexible solution.
Any suggestions ?
Thanks in advance.