Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅获取一个具有最早日期值的结果_Sql_Sql Server - Fatal编程技术网

Sql 仅获取一个具有最早日期值的结果

Sql 仅获取一个具有最早日期值的结果,sql,sql-server,Sql,Sql Server,我有一个返回如下值的查询: ;With wholeData AS ( SELECT TuId as TeiluberId, TU_Sem_ID AS SeminarId, TU_HotAnreiseDatum AS Anreise, TU_HotAbreiseDatum AS Abreise ,sem.Sem_von,sem.Sem_bis FROM [WinClient].[TeilnehmerVerpflegungSeminar] tns LEFT J

我有一个返回如下值的查询:

;With wholeData AS
(
    SELECT TuId as TeiluberId, TU_Sem_ID AS SeminarId, TU_HotAnreiseDatum AS Anreise, TU_HotAbreiseDatum AS Abreise
        ,sem.Sem_von,sem.Sem_bis
    FROM [WinClient].[TeilnehmerVerpflegungSeminar] tns
    LEFT JOIN acc_seminar.t_Teiluber ON TuId = TU_ID
    JOIN acc_seminar.t_Seminar sem ON sem_id = TU_Sem_ID
    WHERE CONVERT(date,tns.Datum) < CONVERT(date, sem_von)
    GROUP BY TuId, TU_Name, TU_Vorname, VpId, TU_Typ, TU_Sto, tu_sem_id, TU_HotAnreiseDatum, TU_HotAbreiseDatum, sem.Sem_von, sem.Sem_bis

    UNION ALL

    SELECT TU_ID, TU_Sem_ID, TU_HotAnreiseDatum, ISNULL(TU_HotAbreiseDatum, CONVERT(date, sem_bis)) AS Abreise, Sem_von, Sem_bis
    FROM acc_seminar.t_Teiluber
    JOIN acc_seminar.t_Seminar ON sem_id = TU_Sem_ID
    WHERE TU_ID NOT IN (SELECT tvs.TuId FROM [WinClient].[TeilnehmerVerpflegungSeminar] tvs) AND TU_HotAnz > 0
    AND TU_HotAnreiseDatum IS NOT NULL AND (CONVERT(date, TU_HotAnreiseDatum) != CONVERT(date, sem_von) OR CONVERT(date, TU_HotAbreiseDatum) != CONVERT(date, sem_bis))
) 
SELECT q1.* from wholeData q1
    JOIN (select SeminarId, MIN(Anreise) from WholeData group by SeminarId) q2
    ON q1.SeminarId = q2.SeminarId AND q1.Anreise = q2.Anreise
    WHERE q1.SeminarId = @Sem_ID
如您所见,我得到了多个具有相同“半干旱”值的结果。我希望得到具有最低“Anreise”日期值的结果,并返回一个具有最早日期的结果

我尝试使用MIN,但我得到了一个聚合函数错误,我没有其他想法

SELECT * FROM
(
SELECT TuId as TeiluberId, TU_Sem_ID AS SeminarId, TU_HotAnreiseDatum AS Anreise, TU_HotAbreiseDatum AS Abreise
,sem.Sem_von,sem.Sem_bis
FROM [WinClient].[TeilnehmerVerpflegungSeminar] tns
LEFT JOIN acc_seminar.t_Teiluber ON TuId = TU_ID
JOIN acc_seminar.t_Seminar sem ON sem_id = TU_Sem_ID
WHERE CONVERT(date,tns.Datum) < CONVERT(date, sem_von)
GROUP BY TuId, TU_Name, TU_Vorname, VpId, TU_Typ, TU_Sto, tu_sem_id, TU_HotAnreiseDatum, TU_HotAbreiseDatum, sem.Sem_von, sem.Sem_bis

UNION ALL

SELECT TU_ID, TU_Sem_ID, TU_HotAnreiseDatum, ISNULL(TU_HotAbreiseDatum, CONVERT(date, sem_bis)) AS Abreise, Sem_von, Sem_bis
FROM acc_seminar.t_Teiluber
JOIN acc_seminar.t_Seminar ON sem_id = TU_Sem_ID
WHERE TU_ID NOT IN (SELECT tvs.TuId FROM [WinClient].[TeilnehmerVerpflegungSeminar] tvs) AND TU_HotAnz > 0
AND TU_HotAnreiseDatum IS NOT NULL AND (CONVERT(date, TU_HotAnreiseDatum) != CONVERT(date, sem_von) OR CONVERT(date, TU_HotAbreiseDatum) != CONVERT(date, sem_bis))
) tu
WHERE tu.SeminarId = @Sem_ID
您可以像这样使用with命令:

;With wholeData AS
(
    SELECT TuId as TeiluberId, TU_Sem_ID AS SeminarId, TU_HotAnreiseDatum AS Anreise, TU_HotAbreiseDatum AS Abreise
        ,sem.Sem_von,sem.Sem_bis
    FROM [WinClient].[TeilnehmerVerpflegungSeminar] tns
    LEFT JOIN acc_seminar.t_Teiluber ON TuId = TU_ID
    JOIN acc_seminar.t_Seminar sem ON sem_id = TU_Sem_ID
    WHERE CONVERT(date,tns.Datum) < CONVERT(date, sem_von)
    GROUP BY TuId, TU_Name, TU_Vorname, VpId, TU_Typ, TU_Sto, tu_sem_id, TU_HotAnreiseDatum, TU_HotAbreiseDatum, sem.Sem_von, sem.Sem_bis

    UNION ALL

    SELECT TU_ID, TU_Sem_ID, TU_HotAnreiseDatum, ISNULL(TU_HotAbreiseDatum, CONVERT(date, sem_bis)) AS Abreise, Sem_von, Sem_bis
    FROM acc_seminar.t_Teiluber
    JOIN acc_seminar.t_Seminar ON sem_id = TU_Sem_ID
    WHERE TU_ID NOT IN (SELECT tvs.TuId FROM [WinClient].[TeilnehmerVerpflegungSeminar] tvs) AND TU_HotAnz > 0
    AND TU_HotAnreiseDatum IS NOT NULL AND (CONVERT(date, TU_HotAnreiseDatum) != CONVERT(date, sem_von) OR CONVERT(date, TU_HotAbreiseDatum) != CONVERT(date, sem_bis))
) 
SELECT q1.* from wholeData q1
    JOIN (select SeminarId, MIN(Anreise) from WholeData group by SeminarId) q2
    ON q1.SeminarId = q2.SeminarId AND q1.Anreise = q2.Anreise
    WHERE q1.SeminarId = @Sem_ID
您可以使用行号


@是的,对不起!编辑我的问题。