如何获得内部联接的第一个实例以在 SQL Server 中执行“选择进入”?

MrTouya

到目前为止,这是我的 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 答案,我不确定它是否在这里正确适用。

SQL Left Join 仅第一次匹配

谢谢!

丹贝

您必须使用排名功能。

;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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何选择第一个值 - SQL Server

来自分类Dev

我可以在Sql Server的单个查询中获得第一个和最后一个事务吗?

来自分类Dev

如何在SQL Server中选择第一个插入的行?

来自分类Dev

如何在SQL Server存储过程中选择第一个ID的值?

来自分类Dev

如何在SQL Server中选择第一个插入的行?

来自分类Dev

SQL Server获得第一个匹配值

来自分类Dev

如何在SQL Server中创建从去年的第一个月到当前月份执行的循环?

来自分类Dev

如何在SQL Server中的分隔符之前获取第一个值

来自分类Dev

T-SQL选择第一个实例

来自分类Dev

SQL Server:如何获取单词中的第一个或第二个字母?

来自分类Dev

SQL Server(TSQL)如果存在则选择第一个值,否则选择其他

来自分类Dev

仅获取第一个结果外部联接SQL Server

来自分类Dev

SQL Server:使用第一个重复项中的数据更新重复项

来自分类Dev

SQL Server 2005:在匹配的varchar中获取第一个单词

来自分类Dev

在SQL Server中按用户获取表中的第一个和最后一个条目

来自分类Dev

从查询SQL Server中的每个日期获取第一个和最后一个日期时间

来自分类Dev

如何联接表以从SQL查询中的第一个表中提取所有记录

来自分类Dev

当我在 SQL Server 2012 中的第一个表中定义范围时,如何在表中插入范围的记录

来自分类Dev

当SQL Server 2012中没有匹配的列时,如何从第一个表中获取所有列

来自分类Dev

当SQL Server 2012中没有匹配的列时如何从第一个表中获取所有列

来自分类Dev

如何始终选择一个特定值的第一个SQL

来自分类Dev

如何从SQL Server 2008开始查找第一个字符

来自分类Dev

Oracle PL / SQL从名称(HUN)中获得第一个字母

来自分类Dev

如果(插入的)第一个表中的值更大,则SQL Server更新另一个表中的值

来自分类Dev

SQL Server - 执行第一个 where 子句,如果有效则不执行第二个

来自分类Dev

SQL Server XQuery,如何选择一个值

来自分类Dev

如何在联接语句SQL Server中执行存储过程

来自分类Dev

SQL-UNION,在执行排序时,第一个选择语句的优先级

来自分类Dev

当第二个查询依赖于SQL Server中的第一个查询输出时,如何在存储过程中编写两个查询

Related 相关文章

  1. 1

    如何选择第一个值 - SQL Server

  2. 2

    我可以在Sql Server的单个查询中获得第一个和最后一个事务吗?

  3. 3

    如何在SQL Server中选择第一个插入的行?

  4. 4

    如何在SQL Server存储过程中选择第一个ID的值?

  5. 5

    如何在SQL Server中选择第一个插入的行?

  6. 6

    SQL Server获得第一个匹配值

  7. 7

    如何在SQL Server中创建从去年的第一个月到当前月份执行的循环?

  8. 8

    如何在SQL Server中的分隔符之前获取第一个值

  9. 9

    T-SQL选择第一个实例

  10. 10

    SQL Server:如何获取单词中的第一个或第二个字母?

  11. 11

    SQL Server(TSQL)如果存在则选择第一个值,否则选择其他

  12. 12

    仅获取第一个结果外部联接SQL Server

  13. 13

    SQL Server:使用第一个重复项中的数据更新重复项

  14. 14

    SQL Server 2005:在匹配的varchar中获取第一个单词

  15. 15

    在SQL Server中按用户获取表中的第一个和最后一个条目

  16. 16

    从查询SQL Server中的每个日期获取第一个和最后一个日期时间

  17. 17

    如何联接表以从SQL查询中的第一个表中提取所有记录

  18. 18

    当我在 SQL Server 2012 中的第一个表中定义范围时,如何在表中插入范围的记录

  19. 19

    当SQL Server 2012中没有匹配的列时,如何从第一个表中获取所有列

  20. 20

    当SQL Server 2012中没有匹配的列时如何从第一个表中获取所有列

  21. 21

    如何始终选择一个特定值的第一个SQL

  22. 22

    如何从SQL Server 2008开始查找第一个字符

  23. 23

    Oracle PL / SQL从名称(HUN)中获得第一个字母

  24. 24

    如果(插入的)第一个表中的值更大,则SQL Server更新另一个表中的值

  25. 25

    SQL Server - 执行第一个 where 子句,如果有效则不执行第二个

  26. 26

    SQL Server XQuery,如何选择一个值

  27. 27

    如何在联接语句SQL Server中执行存储过程

  28. 28

    SQL-UNION,在执行排序时,第一个选择语句的优先级

  29. 29

    当第二个查询依赖于SQL Server中的第一个查询输出时,如何在存储过程中编写两个查询

热门标签

归档