我有一张桌子,里面有一个tendertype,它显示哪些付款已经在salesrow上完成了。填写列中的缺失值
UPDATE:对不起,我不太清楚 - 它应该是按SalesHeader因为另一salesheader可以有不同的值
在例1我只有一个付款记录。这应该是 目前在所有记录
在例2我有2笔支付所有记录。但我应该只拿其中一个 并填写空位,但保持原样。
的样本数据
DECLARE @Table TABLE (
SalesHeader varchar(10),Amount int,TenderType nvarchar(50)
)
INSERT INTO @Table
VALUES
('A',1 ,'MasterCard'),
('A',10 ,NULL ),
('A',100 ,NULL ),
('A',10 ,NULL ),
('A',1 ,NULL ),
('B',1 ,'CASH' ),
('B',100 , NULL )
select * from @Table
有我试图到目前为止什么?
SELECT
[Fakturanummer] as SalesHeader
,[Omsætning] as Amount
,a.[TenderType]
,x.TenderType
FROM [CE_COG-BI-EDW].[dm].[SALG_TRANSAKTIONER] a
CROSS APPLY(
select top 1 TenderType from [CE_COG-BI-EDW].[dm].[SALG_TRANSAKTIONER] t
where TenderType is not null and a.Fakturanummer = t.Fakturanummer
)x
where DATASET = 'se' and Fakturanummer in ('5133324','104893')
order by Fakturanummer
实施例1:
SalesHeader | Amount | TenderType
----------------------------------------
A 1 MasterCard
A 10 NULL
A 100 NULL
A 10 NULL
A 1 NULL
B 10 CASH
B 100 NULL
期望的结果1
SalesHeader | Amount | TenderType
----------------------------------------
A 1 MasterCard
A 10 MasterCard
A 100 MasterCard
A 10 MasterCard
A 1 MasterCard
B 1 CASH
B 100 CASH
例2:
SalesHeader | Amount | TenderType
----------------------------------------
A 1 MasterCard
A 10 CASH
A 100 NULL
A 10 NULL
A 1 NULL
期望的结果2
SalesHeader | Amount | TenderType
----------------------------------------
A 1 MasterCard
A 10 CASH
A 100 MasterCard
A 10 MasterCard
A 1 MasterCard
我试着用一些CROSS APPLY
,但我不能让我的头周围。
是第一个例子左连接? –
@RyanGadsdon林不知道你的意思。它如何我的表看起来像 – plaidDK
我没有downvote –