Próbuję więc użyć zastosowania Cross, ale nie mogę się tego wydawać. Mam jakieś pytania, które wyglądają tak: Wybierz Col1, Col2 od DBO.Tablea jako miejsce, w którym COL3 = (Wybierz Max (Col4) od DBO ....

0
xhr489 15 marzec 2021, 16:39

2 odpowiedzi

Najlepsza odpowiedź

Brakuje WHERE w drugim zapytaniu, jeśli chcesz, aby 2 zapytań do pracy to samo:

SELECT COL1, COL2
FROM dbo.tableA AS A
CROSS APPLY (SELECT MAX(COL4) AS MAX_DATE
              FROM TABLEA AS B
              WHERE A.COL1 = B.COL1) AS SUB 
WHERE A.COL3 = SUB.MAX_DATE;
1
Larnu 15 marzec 2021, 13:43

Oprócz przepisywania APPLY, ponieważ jest to samodzielne połączenie, można również zrobić za pomocą kruszywa okna MAX:

SELECT COL1, COL2
FROM (
    SELECT *,
        MAX(COL4) OVER (PARTITION BY COL1) AS mx
    FROM dbo.tableA
) AS A
WHERE COL3 = mx
1
Charlieface 15 marzec 2021, 14:16