0
select C.customerId,(C.lastName+', '+C.firstName) as CustomerName, C.companyName, 
D.companyName+' ('+D.lastName+','+D.firstName+')' 
as "Parent CompanyName(Last, First)",S.siteId, S.nickName as siteName, 
dbo.GetSiteTelemetryBoxList(s.siteId) as "DeviceId's", 
dbo.GetSiteTelemetryBoxSKUList(S.siteId,0) as SKU
from Site S
INNER JOIN Customer C ON S.customerId = C.customerId 
INNER JOIN Customer D ON D.customerId = C.parentCustomerId
where S.createDate between DATEADD(DAY, -65, GETUTCDATE()) and GETUTCDATE()
order by C.customerId, S.siteId

上記のクエリは、次のような値を返します。

CID     CustomerName      companyName           Parent CompanyName(Last, First)                 SiteName                    DeviceId        SKU
888296  DeYoung, Scott    DeYoung Farms         Mercier Valley Irrigation (Mercier,Ralph)       H E east                    200241        NETB12WR
890980  Rust, Marcus      NULL                  Chester Inc. (Young,Scott)                      Byroad east                 346370        NETB12WR
890980  Rust, Marcus      NULL                  Chester Inc. (Young,Scott)                      Byroad west                 345431        NETB12WR
891094  Pirani, Mark      A Pirani Farm         AMX Irrigation (Burroughs,Michael)              hwy 64 south                333721        UNKNOWN
891094  Pirani, Mark      A Pirani Farm         AMX Irrigation (Burroughs,Michael)              HWY 64 North                250162        NETB12WR
891094  Pirani, Mark      A Pirani Farm         AMX Irrigation (Burroughs,Michael)              HWY 64 West                 250164        NETB12WR
891094  Pirani, Mark      A Pirani Farm         AMX Irrigation (Burroughs,Michael)              HWY 64 East                 250157        NETB12WR
891430  Gammil, Bob       Gammil FArms          AMX Irrigation (Burroughs,Michael)              angel                       333677        UNKNOWN
891430  Gammil, Bob       Gammil FArms          AMX Irrigation (Burroughs,Michael)              cemetery                    333564        UNKNOWN

私が今直面している問題は、結果セットで customerId/Name が繰り返されている場合です。データを 1 つの値として表すには、SiteName、deviceId、SKU を連結する必要があります。たとえば、Mark Pirani の行は次のようになります。

 CID   CustomerName  ...   SiteName                                               DeviceId's                   ...
891904 Pirani, Mark  ...   hwy 64 south, HWY 64 North, HWY 64 West, HWY 64 East   333721,250162,250164,250157  ...  
4

3 に答える 3

0

次のような行を変換して、行を連結された文字列に変換できます。

 select
   distinct  
stuff((
    select ',' + u.username
    from users u
    where u.username = username
    order by u.username
    for xml path('')
),1,1,'') as userlist
from users
group by username
于 2013-07-11T20:04:19.307 に答える
0

これはコードの問題というよりもSQLクエリC#の問題であると思います。より適切には、コード レベルではなくクエリ レベルでこの問題を解決する方が効率的だと思います。私の頭の上から、SELECT DISTINCTまたはGROUP BY句を使用できます。

この問題に対処する別の StackOverflow の質問があります。

于 2013-07-11T20:05:02.280 に答える