J'ai trois colonnes
PID, AppNo et TRANSEDDATE
J'ai besoin d'une requête pour mettre à jour l'Appno dans le format ci-dessous pour l'instant, la colonne Appno est null. P> Ceci est le SQL qui ne fonctionne pas P> p> p> p>
5 Réponses :
Query.
convert Vous pouvez écrire une mise à jour comme suit: p> et tester le résultat comme: p> code ici .. p> p> traitementddate code> à ce jour si Row_Number ne devrait pas considérer le temps comme:
Vous avez résolu 80% de mon problème car je peux obtenir exactement ce qui se trouve sur la table de ma table en direct. Mais maintenant, comment puis-je le mettre à jour? Merci beaucoup
Vous semblez chercher à mettre à jour votre table d'origine. Vous pouvez utiliser row_number () code> dans une CTE pour classer des enregistrements avec des groupes ayant la même date (sans temps) et pid, commandé par date (avec le temps), puis effectuez la mise à jour à la volée:
PID | AppNo | ProcessedDate
--: | ----: | :---------------
11 | 1 | 09/30/2019 18:21
3 | 1 | 09/25/2019 08:37
3 | 2 | 09/25/2019 08:37
11 | 1 | 09/25/2019 08:39
11 | 2 | 09/25/2019 08:40
7 | 1 | 09/26/2019 14:19
7 | 2 | 09/26/2019 14:20
7 | 3 | 09/26/2019 14:22
2 | 1 | 09/26/2019 14:23
11 | 1 | 09/26/2019 14:23
11 | 2 | 09/26/2019 14:24
11 | 3 | 09/26/2019 14:24
3 | 1 | 09/26/2019 14:24
Solution parfaite. Tu es un sauveur. Tous les conseils sur la manière de le rendre dynamique et de réduire la durée de calcul de la colonne déjà de mise à jour, je veux dire puis-je utiliser non null pour appno code> puis regrouper le script dans une procédure stockée pour exécuter lorsqu'une valeur null est trouvée. . Peut-être un déclencheur ou quelque chose
@Petergodfreyobike: Oui Vous pouvez ajouter une condition dans la requête externe i> pour mettre à jour uniquement les valeurs non nulles, telles que Mettre à jour CTE Set appno = rn où appno n'est pas null code>. Méfiez-vous cependant que vous devez conserver la numérotation cohérente (que se passe-t-il si vous devez modifier un numéro de ligne déjà affecté, par exemple si un
CréeredDate code> est mis à jour?).
Votre question perçue est déjà un problème, alors j'ai dû supprimer le non nul et utiliser votre script initial dans le programme. Mais je pense que cela a de la manière de réduire le temps d'exécution de la requête, mais c'est ok. Comme la table devient des largeurs, ce sera un problème. Je l'ai fait une procédure stockée. Je peux le modifier à tout moment de l'emplacement éloigné. S'il vous plaît si vous avez une autre idée, faites le moi savoir
Vous devez utiliser la partition juste avec la date de date, comme ceci:
Vous ne devriez pas modifier le type de données de la date code> code> à varchar () code> sauf si cela n'est vraiment requis que le but de représentation.
si si traitementddate code> est de type
DateTime code> Vous pouvez simplement faire
traitementddate code> est de type
Varchar Code> Vous pouvez simplement faire P>
;WITH
t as (
SELECT pid, convert(datetime, ProcessedDate, 120) ProcessedDate
from table
)
SELECT
pid,
ROW_NUMBER() OVER (
PARTITION BY pid, convert(date, ProcessedDate)
ORDER BY pid, ProcessedDate
) AppNo,
ProcessedDate
FROM t
Pourquoi 1ère rangée a appno 3 au lieu de 1?
Oh vraiment désolé. Je l'ai mis à jour.
Où sont les données d'échantillonnage et où sont les résultats attendus des deux? Ils sont tous deux identiques
Le résultat que je veux est Appno, je suis sûr que vous comprenez la logique avant de me demander de mettre à jour la question. Je dois mettre à jour la table avec les valeurs dans l'application N ° Les données d'échantillon sur le sol sont la colonne 1 et 3. Colonne 2 (Appno) est null pour le moment, mais ces valeurs sont ce que je veux mettre à jour la colonne avec