我有两张桌子需要加入。
示例:
Table 1: tbl_Item
Id ---- ItemName
1 ----- A<br/>
1 ----- B<br/>
1 ----- c<br/>
2 ----- A<br/>
2 ----- B<br/>
Table 2: tbl_Detail
Id ---- Total
1 ---- 100 <br/>
2 ---- 300<br/>
我需要加入表格并获得以下结果:
Id -- ItemName -- Total
1 -- A --- Null<br/>
1 -- B --- Null<br/>
1 -- C --- 100<br/>
2 -- A --- Null<br/>
2 -- B --- 300<br/>
提前致谢。
答案 0 :(得分:0)
您可以使用ROW_NUMBER
:
;WITH CTE AS (
SELECT Id, ItemName,
ROW_NUMBER() OVER (PARTITION BY Id ORDER BY ItemName DESC) AS rn
FROM tbl_Item
)
SELECT t1.Id, t1.ItemName,
CASE WHEN t1.rn = 1 THEN t2.Total END AS Total
FROM CTE AS t1
LEFT JOIN tbl_Detail AS t2 ON t1.Id = t2.Id
答案 1 :(得分:0)
您可以使用total
将row_number()
值分配给 indeterminate 单行:
select t.id, t.ItemName,
(case when row_number() over (partition by t.id order by (select NULL)) = 1
then d.total
end) as total
from tbl_item t join
tbl_detail d
on t.id = d.id;
如果您有排序(可能由另一列指定),则用适当的逻辑替换(select null)
。例如,对于示例数据,您可以使用i.name desc
,但我怀疑这是您正在寻找的实际订单。