如果满足不同表中的另一个条件,创建一个列并用特定值填充它?

问题描述 投票:0回答:1

我必须写一个查询来检索客户的公司名称,街道地址的第一行,城市以及一个名为Address_Type的列,该列的值为'Billing'(对于SalesLT.CustomerAddress表中的地址类型为'Main'的客户)办公室”。

我有一个名为Sa.customer的表,该表具有客户信息,例如名字,姓氏,地址等,以及另一个名为SalesLT.CustomerAddress的表,该表具有客户ID,地址ID,Address_Type等。在我的查询中如果满足SalesLT.CustomerAddress表='Main Office'中的条件地址类型,则创建一个名为“ Address Type”的新列,其值为“ Billing”。

我已在需要的地方加入了多个表,并已使用WHERE命令应用了过滤器。它必须是一个复合查询,即我必须用命令填充空白,并且我无法在两行之间添加或修改代码。

SELECT CompanyName, AddressLine1, City, ___ AS Address_Type
FROM SalesLT.Customer AS c
JOIN SalesLT.CustomerAddress AS ca  
  ON c.Customer_ID = ca.Customer_ID  ###-- join based on Customer_ID   
FROM SalesLT.Address AS a       ### -- join another table  
  ON a.Address_ID = ca.Address_ID   ###-- join based on AddressID
WHERE AddressType = 'Main Office'; ###-- filter for where the correct AddressType

我必须编写一个查询来检索公司名称,街道地址的第一行,城市以及一个名为Address_Type的列,该列的地址为'Billing'(对于在...中输入地址的客户)]]

sql sql-server
1个回答
0
投票

您可以通过测试该结果元组的SalesLT.CustomerAddress字段的值来利用SQL Server CASE语句为[Address Type]列构造一个值:

SELECT ...,
  CASE 
    WHEN SalesLT.CustomerAddress LIKE 'Main Office' THEN 'BILLING'
    ELSE ''
  END AS [Address Type],
  ...
FROM ...
WHERE ...
© www.soinside.com 2019 - 2024. All rights reserved.