这似乎比我发现的要容易。我有一个表,其中包含名字和姓氏(由类型ID指定)以及名字的通用程度。例如:
NameType | Name | FrequencyPercent 1 John 3.267 1 Thomas 1.987 1 Wilson 0.945 2 Smith 4.528 2 Wilson 2.221 2 Thomas 0.437
我希望能够查询名字(NameType = 1)列表,该列表仅在更可能是名字而不是姓氏的情况下才包括名字(基于FrequencyPercentage)。使用此数据集,我的名字查询将包括John和Thomas,而我的LastNames查询将返回Smith和Wilson。
希望我能很好地解释。
谢谢您的一点帮助,
罗素·舒特(Russell Schutte)
如果我理解正确,那么您正在寻找的名字的频率高于与姓氏相同的名字的频率
这适用于名字。您只需要反转姓氏
CREATE Table YourTable ( NameType int, name varchar(20), FrequencyPercent decimal(12,4) ) INSERT INTO YourTable VALUES (1 ,'John', 3.267), (1 , 'Thomas', 1.987), (1 , 'Wilson', 0.945), (2 , 'Smith', 4.528), (2 , 'Wilson', 2.221), (2 , 'Thomas', 0.437) SELECT firstNames.name FROM YourTable firstNames LEFT JOIN YourTable lastNames ON firstnames.Name = lastNames.Name AND lastNames.NameType =2 and firstnames.FrequencyPercent < lastNames.FrequencyPercent WHERE firstNames.NameType =1 AND lastNames.name is null
结果是
name -------------------- John Thomas (2 row(s) affected)