sql >> データベース >  >> RDS >> Sqlserver

T-SQL - 最も近い日付と GROUPED BY ID による SELECT

    これを試すことができます。

    DECLARE @Date DATE = '10/01/2010';
    
    WITH cte AS
        (
        SELECT ID, LinkedID, ABS(DATEDIFF(DD, @date, DATE)) diff,
            ROW_NUMBER() OVER (PARTITION BY LinkedID ORDER BY ABS(DATEDIFF(DD, @date, DATE))) AS SEQUENCE
        FROM MyTable
        )
    
    SELECT *
    FROM cte
    WHERE SEQUENCE = 1
    ORDER BY ID
    ;
    

    LinkedID グループ内の複数の行がターゲットの日付に最も近い場合をどのように処理するかを示していません。このソリューションには 1 つの行のみが含まれます。この場合、複数の有効な値のどの行が含まれるかは保証できません。

    最も近い値を表すすべての行を含めたい場合は、クエリで RANK() を使用して ROW_NUMBER() を変更できます。



    1. 他の結合でlaravel5の緯度と経度で取得

    2. 特権を付与しようとしているときに、ユーザー'root'@'localhost'のアクセスが拒否されました。特権を付与するにはどうすればよいですか?

    3. Accessで重複レコードを見つける方法

    4. ODP.NETマネージド-要求された.NetFrameworkデータプロバイダーが見つかりません