我有以下查詢生成給定的結果。SQL查詢 - 根據條件選擇一行或另一行
SELECT
p.BookingID, p.PaxID, p.LeadPax, p.FirstName AS LeadPaxName
FROM
[dbo].[BookingV2_Pax] p
WHERE
p.[LeadPax] = 1
UNION
SELECT
PN.BookingID, PN.PaxID, PN.LeadPax, PN.LeadPaxName
FROM
(SELECT
p.BookingID, p.PaxID, p.LeadPax, p.FirstName AS LeadPaxName,
ROW_NUMBER() OVER (PARTITION BY p.BookingID ORDER BY p.PaxID) AS rn
FROM
[dbo].[BookingV2_Pax] p
WHERE
p.[LeadPax] = 0) PN
WHERE
PN.rn = 1
結果:
什麼我在這裏做的是選擇具有LeadPax = true
該行並從具有LeadPax = false
其他行選擇的第一行我想要的是選擇LeadPax = 1
或LeadPax = 0
的行。
據我所知,如果這是一個列相關的問題,我可以使用CASE
或COALESCE
,但我如何有效地做到這一點?
此外,在如何優化原始查詢任何指針將高度讚賞
轉到** CodeReview **,另一個** SE **站點。 –