0

私は次のようなクエリを持っています

    SELECT distinct(a.CreatedOn),
       a.id AS ID ,
       u1.FirstName CreatedByFirstName,
       u1.LastName
FROM AuditDetail a
LEFT JOIN UserProfile u1 ON a.CreatedBy = u1.UserProfileID
LEFT JOIN UserProfile u2 ON a.UpdatedBy = u2.UserProfileID

これにより、すべてのレコードが表示されます。すべてのレコードが来るため、各レコードで個別のcreatedonも繰り返されます。createon がすべてのレコードで同じである場合、その最初のレコードまたは単一のレコードがすべてではないはずです。どこが間違っていますか?

ここに画像の説明を入力

4

2 に答える 2

1

これを試して、

あなたを助けるかもしれません、使用されたサブクエリ

SELECT a.CreatedOn,
       a.id AS ID ,
       u1.FirstName CreatedByFirstName,
       u1.LastName
FROM AuditDetail a
LEFT JOIN UserProfile u1 ON a.CreatedBy = u1.UserProfileID LEFT joinUserProfileu2 ON a.UpdatedBy = u2.UserProfileID
WHERE a.CreatedOn IN
    (SELECT DISTINCT CreatedOn
     FROM AuditDetail)
于 2013-04-05T09:41:49.237 に答える
1

グループごとに各レコードにランクを付けるRanking Functionなどを使用できます。ROW_NUMBER()

WITH recordList
AS
(
    SELECT  a.CreatedOn,
            a.id as ID ,
            u1.FirstName CreatedByFirstName, 
            u1.LastName,
            ROW_NUMBER() OVER(PARTITION BY a.CreatedOn ORDER BY a.CreatedOn) rn
    FROM    AuditDetail a 
            left join UserProfile u1 
                on a.CreatedBy = u1.UserProfileID 
            left join UserProfile u2 
                on a.UpdatedBy = u2.UserProfileID
)
SELECT  CreatedOn,
        ID,
        CreatedByFirstName,
        LastName
FROM    recordList
WHERE   rn = 1
于 2013-04-05T09:29:55.767 に答える