2016-12-21 15 views
2

私を助けてください。私は何か悪いことをする。サブクエリの内部に参加する - STUFF

SELECT   
    EventSpotsJoin.Event, Links.LongLat 
FROM 
    EventSpotsJoin 
INNER JOIN 
    Links ON EventSpotsJoin.Spot = Links.IdLinks 
ORDER BY 
    EventSpotsJoin.Event 

結果は

2054 39.0440182, -74.7659984 
2054 28.29555, -80.60898333333333 
2068 39.0440182, -74.7659984 
2068 28.29555, -80.60898333333333 

であると私は長い1行に緯度に参加したいと思います。私はこのコードを使用します。

SELECT 
    [EventSpotsJoin].[Event], 
    STUFF((SELECT '|' + CAST(Links.LongLat AS nvarchar) 
      FROM [dbo].[EventSpotsJoin] 
      WHERE EventSpotsJoin.Spot = Links.IdLinks 
      FOR XML PATH ('')), 1, 1, '') 
FROM    
    EventSpotsJoin 
INNER JOIN 
    Links ON EventSpotsJoin.Spot = Links.IdLinks 
ORDER BY 
    EventSpotsJoin.Event 

と結果が間違っている:

2054 39.0440182, -74.7659984|39.0440182, -74.7659984 
2054 28.29555, -80.60898333333333|28.29555, -80.60898333333333 
2068 39.0440182, -74.7659984|39.0440182, -74.7659984 
2068 28.29555, -80.60898333333333|28.29555, -80.60898333333333 

は、私は、イベントによってグループにそれを必要とし、同じ緯度長い結果がない参加。

答えて

2

はこれを試してみてください:を使用すると、イベントID 2054のために入れて期待していること39.0440182, -74.7659984|28.29555, -80.60898333333333

SELECT [EventSpotsJoin].[Event], STUFF(
    (SELECT '|' + CAST(Links.LongLat AS nvarchar) 
     FROM Links 
     WHERE EventSpotsJoin.Spot = Links.IdLinks 
     FOR XML PATH ('')) 
    , 1, 1, '') 
FROM EventSpotsJoin 
ORDER BY EventSpotsJoin.Event 
+0

であると仮定するとはい、私はあなたが言った正確に何を期待しています。しかし、結果はまだ間違っている:(すべての緯度長いが、別の行にある。 39.0440182、-74.7659984 28.29555、-80.60898333333333 39.0440182、-74.7659984 28.29555、-80.60898333333333 –

+0

はい、私は私はこのスクリプトをコピーしました... –

+0

この 'EventSpotsJoin.Spot = Links.IdLinks'条件は疑問です。イベント2054のために、テーブルに異なる' EventSpotsJoin.Spot'を持つ2つのレコードがあるかもしれません。 –

関連する問題