【问题标题】:Create view of a table substituting rows on condition with another table's rows创建一个表的视图,用另一个表的行替换条件行
【发布时间】:2021-08-19 19:29:19
【问题描述】:

我为扭曲的标题道歉。基本上我有一张客户账户表,比如

表 1 我需要创建此表 1 的视图,如果帐户类型为“共享”,我将相应的行替换为第二个表的行,表 2,其中我有持有共享帐户的主题的详细信息(例如,我有三个代码都与帐户 3 的外键相关联)。在这些主题中,我需要将在表 2 的列(例如列 CARD)上具有标志的主题作为替代行。

我希望在这里找到一些清晰的信息,因为我对 SQL 还很陌生,而且我在条件上迷路了:facepalm:

非常感谢您的帮助

【问题讨论】:

  • 请避免截图,同时提供table2的示例数据和所需的输出
  • 因为没有提供足够的信息。我建议 1. 左连接表,2. 使用 CASE when /then 来定义您替换的列。

标签: sql substitution multiple-conditions


【解决方案1】:

好吧,为了给你一些指导以便你可以开始,你总是可以加入 2 个子集。因此,您可以通过所有“共享”类型的连接选择(在 Table1 和 Table2 之间)选择所有“非共享”类型。

类似这样的:

SELECT 
  ACCOUNT,
  [ACCOUNT TYPE],
  SERVICE --, ...
FROM TABLE1 
  WHERE [ACCOUNT TYPE] <> 'shared'
UNION 
SELECT 
  ACCOUNT, -- or whatever data from T1 or T2 on the ¨substitute" row
  [ACCOUNT TYPE], -- or whatever data from T1 or T2 on the ¨substitute" row
  SERVICE --, ...
FROM TABLE1 T1
  INNER JOIN TABLE2 T2 ON (T1.CARD = T2.CARD) -- OR WHATEVER FK JOINS THEM BOTH
  WHERE T1.[ACCOUNT TYPE] = 'shared'
    --AND T2...  -- WHATEVER OTHER CONDITIONS MAY APPLY 
; --SQL Server/SQL Azure sintax

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多