我有如下查询:
SELECT *
FROM dbo.Item AS i
LEFT JOIN dbo.ItemSpecific AS is ON i.ID = is.ID
dbo.Item
ID
Name
Description
dbo.ItemSpecfic
ID
ItemID
Name
Description
您会注意到dbo.ItemSpecific表包含与dbo.Item表相同的列。如果某个项目的帐户级别有自定义,则详细信息位于dbo.ItemSpecific表中,否则如果该帐户仅使用标准项目,则根本不会有dbo.ItemSpecific记录。
我要做的是获取每个帐户的所有特定记录的列表,以及帐户在没有自定义时将使用的标准项记录。有没有办法在单个查询中执行此操作,或者是一个联合我唯一的选择?现在使用左连接,如果有任何自定义,则不会返回常规dbo.Item记录,因为连接已完成。
我想要的数据示例如下:
ItemID ItemSpecificID Name Description
1 1 'Test' 'Test'
2 NULL 'Test2' 'Test2'
2 2 'Test3' 'Test3'
2 3 'Test4' 'Test4'
答案 0 :(得分:0)
答案 1 :(得分:-1)
试试这个
SELECT i.ID,
isp.ItemSpecificID,
Isnull(isp.Name, i.Name) Name,
Isnull(isp.[Description], i.[Description]) [Description]
FROM dbo.Item AS i
LEFT outer JOIN dbo.ItemSpecific AS isp ON i.ID = isp.ItemID