DESC en SQLite condicional ORDER BY

Necesito seleccionar los loggings orderados por la siguiente lógica, sin embargo, SQLite genera un error cuando DESC está en el condicional.

ORDER BY CASE WHEN parentGUID IS NULL THEN datePosted DESC ELSE datePosted END 

Esto es para lograr que Facebook ordere = – publicaciones originales (que siempre tienen NULL parentGUID) en order descendente por date y responda a publicaciones originales orderadas por date ascendente.

Si entiendo bien, deberás unirte a la table que tiene la date de la publicación principal. Si está disponible, algo como esto debería hacer:

 DECLARE @X TABLE ( ID INT NOT NULL IDENTITY PRIMARY KEY, parentID INT, datePosted DATE NOT NULL ) INSERT INTO @X (parentID, datePosted) VALUES (NULL, '2010-01-01'), (NULL, '2010-01-02'), (1, '2010-01-03'), (1, '2010-01-04'), (1, '2010-01-05'), (2, '2010-01-06') SELECT Post.parentID, Post.datePosted FROM @X AS Post LEFT JOIN @X AS Parent ON Post.parentID = Parent.ID ORDER BY -- Order by post date, or rather the parent's post date if one exists COALESCE(Parent.datePosted, Post.datePosted) -- Order by reply date Post.datePosted 

Esto le da a esta salida:

 parentID datePosted -------- ---------- NULL 2010-01-02 2 2010-01-06 NULL 2010-01-01 1 2010-01-03 1 2010-01-04 1 2010-01-05 

Tenga en count que esto se romperá si las respuestas pueden tener respuestas por turnos; necesitarías algo más robusto. En MS SQL, utilizaría un CTE, pero no estoy muy familiarizado con Sqlite.

Con su corrección, creo que ahora entiendo. Aquí hay algunos datos de muestra

 |GUID|parentGUID|datePosted| +----+----------+----------+ |1 |null |2010-01-01| |2 |null |2010-01-02| |3 |1 |2010-01-03| |4 |1 |2010-01-04| |5 |1 |2010-01-05| |6 |2 |2010-01-06| 

Y supongo que quieres este resultado:

 |GUID|parentGUID|datePosted| +----+----------+----------+ |1 |null |2010-01-01| |5 |1 |2010-01-05| |4 |1 |2010-01-04| |3 |1 |2010-01-03| |2 |null |2010-01-02| |6 |2 |2010-01-06| 

Eso es bastante difícil (y probablemente lento) para orderar en una sola consulta