0

次のように2つのテーブルを取得しました。

表 1: フィールド (FieldID、FormID、Title、DateCreated など)

表 2: 値 (ValueID、FormID、FieldID、Value、DateModified、...)

場合によっては、フィールドに複数の値がありますが、私のクエリでは、フィールドごとに 1 つの値 (ある場合) が必要です。

私が望むように動作しない私のコードは次のとおりです。

SELECT  f.FormID, f.FieldID, f.FormID, f.Title, v.Value, v.UserName FROM
(SELECT * FROM FormFields WHERE FormID = '2D6C42E1-0C95-4E40-B792-A17E00C001BF') AS f
LEFT JOIN
(select FormID, ItemID, FieldID, Value, UserName, DateModified from FormValues 
    where FormID = '2D6C42E1-0C95-4E40-B792-A17E00C001BF') as v
ON f.FormID = v.FormID AND f.FieldID = v.FieldID
ORDER BY f.SO

結果:

FormID                                  FieldID                                 Title       Value   UserName
2D6C42E1-0C95-4E40-B792-A17E00C001BF    E7A78AC7-10A4-4752-85D6-A17E00C22EF9    Field One   Val One User1
2D6C42E1-0C95-4E40-B792-A17E00C001BF    E7A78AC7-10A4-4752-85D6-A17E00C22EF9    Field One   Val Two User2
2D6C42E1-0C95-4E40-B792-A17E00C001BF    8E1FAC2A-02F1-4D0D-A3E0-A184001484D8    Field Two   NULL    NULL

注: 2 行目は不要です。

「グループ化」を試しましたが、うまくいきませんでした。誰か助けてください。

前もってありがとう、カルド

4

1 に答える 1

1

試す

SELECT  f.FormID, f.FieldID, f.FormID, f.Title, v.Value, v.UserName FROM
(SELECT * FROM FormFields WHERE FormID = '2D6C42E1-0C95-4E40-B792-A17E00C001BF') AS f
LEFT JOIN
(select FormID, ItemID, FieldID, Value, UserName, DateModified,
ROW_NUMBER() OVER (PARTITION BY FieldID ORDER BY Value) as rn from FormValues 
    where FormID = '2D6C42E1-0C95-4E40-B792-A17E00C001BF') as v
ON f.FormID = v.FormID AND f.FieldID = v.FieldID AND v.rn=1
ORDER BY f.SO

グループの最初にしたい行に基づいて句を微調整する必要があるかもしれません(「One」と「Two」を使用すると「One」が返されますが、他の可能な値はわかりませんORDER BY Value)。OVER

于 2013-04-28T15:04:44.393 に答える