SQL - 带有一些肮脏数据的不同条目

时间:2010-12-08 00:33:13

标签: tsql

我有一个问题。我有两个由ID链接的表。

TableA
   ID
   Price
   Other_Stuff

TableB
   ID
   TableA_ID
   Type
   Age

我可以做:

SELECT
   M1.Age,
   F1.Age,
   M2.Age,
   F2.Age,
FROM TableA
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='1') AS M1 ON M1.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='2') AS F1 ON F1.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='3') AS M2 ON M2.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='4') AS F2 ON F2.TableA_ID=TableA.ID

当数据良好时,事情按预期工作,数据并不总是好的。通常,表B中的每种类型最多只有一种或不存在。问题是对于表中的旧数据,在存在类型3和5之前,存在两种类型1或两种类型2的可能性。在这种情况下,我希望将第二种类型1视为类型2,将第二种类型2视为类型4.

基本上我想为TableA中的每个条目返回一条记录,其中4个年龄列在各自的列中,我不想在TableA中为每个条目记录多条记录。

我正在使用MS SQL 2000 ....老了,我知道。

谢谢,

1 个答案:

答案 0 :(得分:0)

尝试将子查询更改为:

SELECT TOP 1 * FROM TableB WHERE TableB.Type='1 AND TableA_ID=TableA.ID