到目前为止,这是我的 SQL 语句
INSERT INTO RegisteredDonors (firstname,
lastname,
organization,
OrganizationType,
OrganizationGroup,
OrganizationField1,
OrganizationField2,
OrganizationOther,
Website,
PrimaryEmail,
AltEmail,
PrimaryPhone,
PrimaryPhoneName,
AltPhone,
AltPhoneName,
FaxNumber,
BillingFirstName,
BillingLastName,
BillingCompany,
BillingAddressLine1,
BillingAddressLine2,
BillingCity,
BillingPostalCode,
BillingState,
BillingCountry,
ShippingFirstName,
ShippingLastName,
ShippingCompany,
ShippingAddressLine1,
ShippingAddressLine2,
ShippingCity,
ShippingPostalCode,
ShippingState,
ShippingCountry,
DateAdded,
DonorStatusCode,
qbId,
CreatedBy)
SELECT firstname,
lastname,
organization,
organization_type,
organization_group,
organization_field_1,
organization_field_2,
organization_other,
organization_website,
email,
email_alt,
telephone,
telephone_name,
telephone_alt,
telephone_alt_name,
fax,
payment_firstname,
payment_lastname,
payment_company,
payment_address_1,
payment_address_2,
payment_city,
payment_postcode,
payment_zone,
payment_country,
shipping_firstname,
shipping_lastname,
shipping_company,
shipping_address_1,
shipping_address_2,
shipping_city,
shipping_postcode,
shipping_zone,
shipping_country,
GETDATE() as CreateDate,
1 as DonorStatusCode,
qb.Id,
'Me' as CreatedBy
FROM
cart_order co
INNER JOIN
qb_customers qb ON (co.organization + ' (' + co.payment_zone + ')') = qb.FullyQualifiedName
ORDER BY
co.order_id DESC
如何让内连接从cart_order 返回第一行结果?我正在使用 SQL Server (Azure),但我无法弄清楚。我查看了这个 StackOverflow 答案,我不确定它是否在这里正确适用。
谢谢!
您必须使用排名功能。
;with co as (
select *, rank() over(partition by organization + ' (' + co.payment_zone + ')' order by organization + ' (' + co.payment_zone + ')') rnk
from cart_order
)
INSERT INTO RegisteredDonors (firstname,
lastname,
organization,
OrganizationType,
OrganizationGroup,
OrganizationField1,
OrganizationField2,
OrganizationOther,
Website,
PrimaryEmail,
AltEmail,
PrimaryPhone,
PrimaryPhoneName,
AltPhone,
AltPhoneName,
FaxNumber,
BillingFirstName,
BillingLastName,
BillingCompany,
BillingAddressLine1,
BillingAddressLine2,
BillingCity,
BillingPostalCode,
BillingState,
BillingCountry,
ShippingFirstName,
ShippingLastName,
ShippingCompany,
ShippingAddressLine1,
ShippingAddressLine2,
ShippingCity,
ShippingPostalCode,
ShippingState,
ShippingCountry,
DateAdded,
DonorStatusCode,
qbId,
CreatedBy)
SELECT firstname,
lastname,
organization,
organization_type,
organization_group,
organization_field_1,
organization_field_2,
organization_other,
organization_website,
email,
email_alt,
telephone,
telephone_name,
telephone_alt,
telephone_alt_name,
fax,
payment_firstname,
payment_lastname,
payment_company,
payment_address_1,
payment_address_2,
payment_city,
payment_postcode,
payment_zone,
payment_country,
shipping_firstname,
shipping_lastname,
shipping_company,
shipping_address_1,
shipping_address_2,
shipping_city,
shipping_postcode,
shipping_zone,
shipping_country,
GETDATE() as CreateDate,
1 as DonorStatusCode,
qb.Id,
'Me' as CreatedBy
FROM co
inner join qb_customers qb on (co.organization + ' (' + co.payment_zone + ')') = qb.FullyQualifiedName
where co.rnk = 1
order by co.order_id desc
我不是 100% 确定rank() over(partition by organization + ' (' + co.payment_zone + ')' order by organization + ' (' + co.payment_zone + ')') rnk
. 如果结果不是预期的结果,则仅运行 CTE 部分以确保 rnk = 1 是每个客户一次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句