使用 SQL SERVER 2012 确实存在笛卡尔积的问题。
以下是我的示例查询:
assertEquals
我的查询结果
预期结果:
Cartesian product Formula: 非数字 SampleID X数字 SampleID 每 SampleNo
示例:
所有SampleNo 137 。我们在 SampleID 列中有两个数字值(277和278),以及一个不同的非数字值(R00137)。然后,此非数字值(R00137)的RealSampleID将为00277和00278.就像我们在上面的图像输出中看到的那样。
答案 0 :(得分:0)
如果没有样本数据,这可能不是您想要的,但这是笛卡尔积:
SELECT A1.*
,RIGHT('00000' + A1.SampleID,5) AS [RealSampleID]
FROM
(
SELECT
ARS1.SampleID
,ARS1.SampleNo
FROM TblSamples AS ARS1
GROUP BY
ARS1.SampleNo
,ARS1.SampleID
) AS [A1],
(
SELECT
ARS2.SampleID
,ARS2.SampleNo
FROM TblSamples AS ARS2
WHERE ISNUMERIC(ARS2.SampleID) = 0
GROUP BY
ARS2.SampleNo
,ARS2.SampleID
) AS A2