簡體   English   中英

來自查詢的單個SQL Server結果集

[英]Single SQL Server Result Set from Query

請提供有關如何使用SQL Server 2005將兩個結果合並為一個的建議。

我遇到這樣的情況,一個Account最多可以有兩個Settlement Instructions ,其建模方式如下:

簡化模式:

Account
---------------------
Id
AccountName
PrimarySettlementId (nullable)
AlternateSettlementId (nullable)


SettlementInstruction
----------------------
Id
Name

我想要的輸出是一個帶有選擇語句的single result set ,其內容與此相似,這將允許我在Spring行映射器中構造一些Java對象:

select
  Account.Id as accountId, 
  Account.AccountName as accountName, 

  s1.Id as primarySettlementId, 
  s1.Name as primarySettlementName, 

  s2.Id as alternateSettlementId, 
  s2.Name as alternateSettlementName

我嘗試了各種方法,但是找不到找到將結果集合並到主FK和備用FK不為null的方法的方法。

最終,我搜索了該論壇,但似乎沒有什么適合我的需求。

您需要一個外部聯接

select
  Account.Id as accountId, 
  Account.AccountName as accountName, 

  s1.Id as primarySettlementId, 
  s1.Name as primarySettlementName, 

  s2.Id as alternateSettlementId, 
  s2.Name as alternateSettlementName
from Account
     left join SettlementInstruction s1 ON s1.Id = Account.PrimarySettlementId
     left join SettlementInstruction s2 ON s2.Id = Account.SecondarySettlementId
where /* ... */

你可以嘗試類似的東西:

SELECT
  a.Id as accountId, 
  a.AccountName as accountName, 
  'Primary' as Settlementtype
  s1.Name as primarySettlementName, 
FROM 
   Account a
INNER JOIN
   SettlementInstruction s1 ON a.PrimarySettlementId = s1.Id
UNION
SELECT
  a.Id as accountId, 
  a.AccountName as accountName, 
  'Alternate' as Settlementtype
  s2.Name as 'AlternateName', 
FROM 
   Account a
INNER JOIN
   SettlementInstruction s2 ON a.AlternateSettlementId = s2.Id

那對你有用嗎?

這會為您提供一個針對帳戶具有PrimarySettlementId的情況的所有帳戶/結算指令的列表,以及第二個備用帳戶不為空的帳戶/結算清單。 兩者均為NULL的將被省略。 某些Account實例可能重復(如果兩個ID字段均有效且不為null)。

或者,如果不是:您到底在尋找什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM