[英]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.