SQL Server:使用WHERE子句仅显示第一个找到的结果
我需要筛选出美国地址的公司,如果公司没有美国地址,则显示德国地址,如果不存在,则显示任何墨西哥地址。。。如果没有这样的国家,显示空单元格 目前我有以下查询SQL Server:使用WHERE子句仅显示第一个找到的结果,sql,sql-server,Sql,Sql Server,我需要筛选出美国地址的公司,如果公司没有美国地址,则显示德国地址,如果不存在,则显示任何墨西哥地址。。。如果没有这样的国家,显示空单元格 目前我有以下查询 SELECT COMP.CompanyName, CNTR.Country, CNTR.Address FROM [dbo].CompaniesTable COMP JOIN [dbo].CountriesTable CNTR on CNTR.accountid = COMP.accountid WHERE CNTR.Country =
SELECT COMP.CompanyName, CNTR.Country, CNTR.Address
FROM [dbo].CompaniesTable COMP
JOIN [dbo].CountriesTable CNTR on CNTR.accountid = COMP.accountid
WHERE CNTR.Country = 'US' OR CNTR.Country = 'Germany' OR CNTR.Country = 'Mexico'
但我的查询显示了美国、德国和墨西哥的地址。
我只需要第一个找到的地址
我正在使用SQLServer2008
多谢各位
更新:添加了模式可能根据国家的优先级计算排名。
然后再过滤一下
SELECT CompanyName, Country, [Address]
FROM
(
SELECT
COMP.accountid, COMP.CompanyName, CNTR.Country, COMP.[Address],
DENSE_RANK() OVER (PARTITION BY COMP.CompanyName
ORDER BY CASE CNTR.Country
WHEN 'US' THEN 1
WHEN 'Germany' THEN 2
WHEN 'Mexico' THEN 3
ELSE 9
END) AS rnk
FROM [dbo].CompaniesTable COMP
JOIN [dbo].CountriesTable CNTR on CNTR.accountid = COMP.accountid
WHERE CNTR.Country IN ('US','Germany','Mexico')
) q
WHERE rnk = 1
你可以用“top”。
试试这个
SELECT top 1 COMP.CompanyName, CNTR.Country, CNTR.Address
FROM [dbo].CompaniesTable COMP
JOIN [dbo].CountriesTable CNTR on CNTR.accountid = COMP.accountid
WHERE CNTR.Country = 'US' OR CNTR.Country = 'Germany' OR CNTR.Country = 'Mexico'
您的表架构是什么?请分享您目前编写的代码。除了表格模式外,还请共享一些示例数据以及所需的输出。
Top1。。。当地址=。。。然后1 else 0 end asc/desc
在where子句中使用case语句。