我有一个问题。我有两个由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 ....老了,我知道。
谢谢,
答案 0 :(得分:0)
尝试将子查询更改为:
SELECT TOP 1 * FROM TableB WHERE TableB.Type='1 AND TableA_ID=TableA.ID