【发布时间】:2016-07-26 14:13:34
【问题描述】:
我有一个名为 DrugEvents 的表的以下输出表,其中 Age 列具有年龄值及其单位。我用来获取下表的查询如下所示。
单位值可在另一个名为 AgeUnit 的表中找到。此表有一个名为 AgeUnitID 的主键和另一个名为 AgeUnitNAme 的列。我需要将值插入到名为 Patient 的表中,以检索年龄、性别、体重、国家和 FKAgeUnitID。目前我有以下查询。
SELECT SUBSTRING(d.Age, 1, CASE CHARINDEX(' ', d.Age)
WHEN 0
THEN LEN(d.Age)
ELSE CHARINDEX(' ', d.Age) - 1
END) AS Age,
Sex,
SUBSTRING(d.[Weight], 1, CASE CHARINDEX(' ', d.[Weight])
WHEN 0
THEN LEN(d.[Weight])
ELSE CHARINDEX(' ', d.[Weight]) - 1
END) AS [Weight],
Country,
d.Age
FROM DrugEvents d
在上面的查询中,我选择了 d.Age 而不是 FKAgeUnitID。如何选择与 Age 列中的 Age unit 值匹配的 FKAgeUnitID?也就是说,对于第一条记录,它应该在“61 YR”中找到“YR”并获取它的 AgeUnitID 并在上面的查询中选择我目前拥有 d.Age 的那个。请指教。
【问题讨论】:
-
一张表中有 2 个
Age列 - 这是不可能的。 -
该输出是我运行的选择查询。第二个年龄列应该是 FKAgeUnitID。它显示年龄,因为我在上述查询中给出了 d.age
-
你的问题从字面上开始
I have the below table called DrugEvents... -
年龄列中的所有值都是'YR'。还有其他单位吗?
-
是的,他们是 YR、HR 和 MIN
标签: sql sql-server substring inner-join sql-server-2014