Il semble que je suis un idiot complet quand il s'agit de SQL ...
Tout ce dont j'ai besoin, c'est d'obtenir une valeur d'une autre table, mais il y a plusieurs lignes avec le même CustomerID sur la deuxième table .. J'aurais besoin de en obtenir un avec JOIN gauche apportera toutes les lignes de sorte que j'ai plusieurs identifiants en double
Ce dont j'ai besoin est de manière proparineuse, mais je ne peux pas l'obtenir pour travailler ... P> (SELECT CONFIRMED FROM settings WHERE ?? c.id == l.id ?? AND MAX(TIMESTAMP) )
3 Réponses :
Vous pouvez utiliser un Row_Number () code> dans la sous-requête:
SELECT c.id as id, c.LANG as Language, c.ALLOWEMAIL as AllowEmail,
l.CONFIRMED as confirmed
FROM cus.CUSTOMER c JOIN
(SELECT s.*,
ROW_NUMBER() OVER (PARTITION BY s.id ORDER BY s.timestamp DESC) as seqnum
FROM settings s
) s
ON s.id = c.id AND s.seqnum = 1;
Il dit que la table créée, mais lorsque j'essaie de choisir * à partir de la nouvelle vue, je viens d'obtenir 01722. 00000 - "Numéro invalide"
@Clomez. . . Rien dans cette requête ne fait évidemment aucune conversion de type. S'il est basé sur cette requête, vous devriez alors regarder la condition code> code>.
Vous pouvez utiliser des fonctions analytiques. Fonctions analytiques DOCS 11GR2 P> Max () Over (Partition par) La clause CODE> peut vous donner une identification maximale horodatale.
SELECT SECONDD.CONFIRMED
FROM CUSTOMER CU
INNER JOIN
(SELECT
*
FROM (SELECT SECONDD.*,
MAX (S.TIMESTAMP) OVER (PARTITION BY S.ID)
AS MAXTIMESTAMP
FROM SETTINGS SECONDD)
WHERE TIMESTAMP = MAXTIMESTAMP) SECONDD
ON SECONDD.ID = CU.ID
Ne t'inquiète pas; Bien que cela sonne très basique, ce n'est pas le cas: -)
Le moyen le plus simple d'obtenir la confirmation du dernier horodatage dans Oracle est garder la dernière code>. EG: P>
CREATE OR REPLACE VIEW cus_settings as
SELECT
c.id AS id,
c.lang AS language,
c.allowemail AS allowemail,
(
SELECT MAX(confirmed) KEEP (DENSE_RANK LAST ORDER BY timestamp)
FROM settings s
WHERE s.customer_id = c.id
) AS confirmed
FROM cus.customer c;
ORA-00913: Trop de valeurs 00913. 00000 - "Trop de valeurs" ou aussi connu comme je ne comprends pas comment utiliser ceci
Eh bien, il semble que vous ayez mal placé en quelque sorte dans votre Create View code> Déclaration. J'ai mis à jour ma réponse avec le code.
Veuillez fournir des données d'échantillonnage et des résultats souhaités.