Azure SQL STRING_AGG 作为更大查询的一部分
Azure SQL STRING_AGG as part of larger Query
许多 questions/solutions 我在这里读到描述了如何单独使用 STRING_AGG 并且我可以使用以下方法:
SELECT Offers.Id, STRING_AGG ( Offers2Currencies.CurrencyCode, ', ' ) AS Currencies
FROM Offers INNER JOIN Offers2Currencies ON Offers2Currencies.OfferID =
dbo.Offers.ID
WHERE dbo.Offers.BuyerMemberId = '64ad10b9-85a6-4fc4-b9eb-d9f9af164d2b'
GROUP BY dbo.Offers.Id
但我正在努力解决如何将其放入更大的查询中的问题,例如:
SELECT
dbo.Offers.ID,
dbo.Offers.UTC,
dbo.Organizations.Code,
dbo.Entities.EntityAbbrev,
dbo.Measurables.Name,
dbo.Offers.Price,
dbo.Offers.SellerMemberId,
dbo.AspNetUsers.UserName
--select STRING_AGG(dbo.Offers2Currencies.CurrencyCode, ', ') Currencies
FROM dbo.Offers
INNER JOIN dbo.AspNetUsers ON dbo.AspNetUsers.Id = dbo.Offers.SellerMemberId
INNER JOIN dbo.MemberCreditRatings ON dbo.AspNetUsers.Id = dbo.MemberCreditRatings.MemberGUID
INNER JOIN dbo.Measurables ON dbo.Offers.MeasurableID = dbo.Measurables.ID
INNER JOIN dbo.Entities ON dbo.Offers.EntityID = dbo.Entities.ID
INNER JOIN dbo.Organizations ON dbo.Measurables.OrganizationID = dbo.Organizations.ID
--INNER JOIN dbo.Offers2Currencies ON dbo.Offers2Currencies.OfferID = dbo.Offers.ID
AND dbo.Entities.OrganizationID = dbo.Organizations.ID
WHERE dbo.Offers.BuyerMemberId = '64ad10b9-85a6-4fc4-b9eb-d9f9af164d2b'
我(认为)我想通了——将所有被选择的字段放入分组依据(尽管它们永远不会在第一个分组依据之外访问)——参见 http://sqlfiddle.com/#!18/aaa65/7(并建议是否更好或替代解决方案)
许多 questions/solutions 我在这里读到描述了如何单独使用 STRING_AGG 并且我可以使用以下方法:
SELECT Offers.Id, STRING_AGG ( Offers2Currencies.CurrencyCode, ', ' ) AS Currencies
FROM Offers INNER JOIN Offers2Currencies ON Offers2Currencies.OfferID =
dbo.Offers.ID
WHERE dbo.Offers.BuyerMemberId = '64ad10b9-85a6-4fc4-b9eb-d9f9af164d2b'
GROUP BY dbo.Offers.Id
但我正在努力解决如何将其放入更大的查询中的问题,例如:
SELECT
dbo.Offers.ID,
dbo.Offers.UTC,
dbo.Organizations.Code,
dbo.Entities.EntityAbbrev,
dbo.Measurables.Name,
dbo.Offers.Price,
dbo.Offers.SellerMemberId,
dbo.AspNetUsers.UserName
--select STRING_AGG(dbo.Offers2Currencies.CurrencyCode, ', ') Currencies
FROM dbo.Offers
INNER JOIN dbo.AspNetUsers ON dbo.AspNetUsers.Id = dbo.Offers.SellerMemberId
INNER JOIN dbo.MemberCreditRatings ON dbo.AspNetUsers.Id = dbo.MemberCreditRatings.MemberGUID
INNER JOIN dbo.Measurables ON dbo.Offers.MeasurableID = dbo.Measurables.ID
INNER JOIN dbo.Entities ON dbo.Offers.EntityID = dbo.Entities.ID
INNER JOIN dbo.Organizations ON dbo.Measurables.OrganizationID = dbo.Organizations.ID
--INNER JOIN dbo.Offers2Currencies ON dbo.Offers2Currencies.OfferID = dbo.Offers.ID
AND dbo.Entities.OrganizationID = dbo.Organizations.ID
WHERE dbo.Offers.BuyerMemberId = '64ad10b9-85a6-4fc4-b9eb-d9f9af164d2b'
我(认为)我想通了——将所有被选择的字段放入分组依据(尽管它们永远不会在第一个分组依据之外访问)——参见 http://sqlfiddle.com/#!18/aaa65/7(并建议是否更好或替代解决方案)