Quantcast
Channel: SQL Server Express Forum
Viewing all articles
Browse latest Browse all 484

gruppierter select mit Bedingung II

$
0
0

Hallo,

ich habe ein Problem mit einer gruppierten Abfrage mit Bedingung. Folgende Beispieltabelle:

CREATE TABLE test(
	id int IDENTITY(1,1) NOT NULL,
	gruppe nchar(10) NULL,
	zustand smallint NULL,
	wert nchar(10) NULL)

INSERT INTO test
VALUES
('A', 1, 'aa'),
('A', 1, 'ab'),
('A', 2, 'ba'),
('A', 3, 'ca'),
('A', 3, 'cb'),
('B', 1, 'aaa'),
('B', 3, 'bbb'),
('B', 3, 'ccc'),
('B', 3, 'ddd'),
('B', 3, 'eee'),
('B', 3, 'fff'),
('C', 1, '111'),
('C', 1, '222'),
('C', 1, '333'),
('C', 2, '444')

Nun möchte ich für jede Gruppe (A, B, ...) den Wert selektieren, für den der Zustand zum ersten mal (sortiert nach das ID) 3 erreicht.

WITH test_CTE AS (
SELECT id, gruppe, zustand, wert, FIRST_VALUE(wert) OVER (Partition by gruppe order by id) AS newWert
FROM test
WHERE zustand = 3)
SELECT MIN(id), newWert FROM aaa_CTE GROUP BY newWert ORDER BY MIN(id)

Das funktioniert schonmal, allerdings möchte ich nun für Gruppen, für die der Zustand 3 nicht erreicht wird, den Wert selektieren, für den erstmalig der Zustand 2 erreicht wird, bzw. eben Zustand 1, wenn auch Zustand 2 nicht exisitert.

Hat hier jemand eine Idee?

Vielen Dank!


Viewing all articles
Browse latest Browse all 484


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>