Hallo Amis,requête pour sélectionner différents
je besoin d'une requête pour lancer un message d'erreur sur la comparaison avec table temp_invoice.
Il faut comparer le champ [Tâche resp #], contre le champ [PB-ID] dans PB_Responsbility table pour client = 3D
format temp_invoice
Concession Number [Task resp#]
TH-123 12345
TH-014 98065
TH-123 41027
TH-567 12345
TH-111 99765
TH-567 41027
TH-228 73095
TH-001 09129
TH-779 41027
TH-333 01029
TH-722 03489
Cela devrait vérifier contre la table de base de données pour laquelle le client est 3D.
TABLEAU PB_Responsbility
[PB-ID] Customer
09129 3D
98065 AB
12345 DC
41027 ZH
99765 3D
73095 UZ
Si le client n'est pas 3D ou si [Tâche resp #] ne se trouve pas dans le tableau PB_Responsbility, il devrait lancer un message, en sélectionnant distinct [Tâche resp #] de la feuille Excel.
Ici la sortie est nécessaire, « incorrecte [Task resp #]: -. 12345,98065,41027,73095,01029,03489
J'ai écrit la requête si,
DECLARE @pb_id_msg VARCHAR(MAX)
SET @pb_id_msg = ''
SELECT @pb_id_msg = @pb_id_msg + ' ,'
+ CONVERT(VARCHAR(10),[Task resp#]) FROM temp_invoice WHERE [Task resp#] NOT IN
(SELECT [PB-ID] FROM PB_Responsbility WHERE Customer = '3D')
GROUP BY CONVERT(VARCHAR(10),[Task resp#]).
Cette est produit le résultat au besoin. Mais si je modifie la requête avec dISTINCT
SELECT DISTINCT @pb_id_msg = @pb_id_msg + ' ,'
+ CONVERT(VARCHAR(10),[Task resp#]) FROM temp_invoice WHERE [Task resp#] NOT IN
(SELECT [PB-ID] FROM PB_Responsbility WHERE Customer = '3D')
Il en résulte que 1 valeur. S'il vous plaît expliquez-moi, pourquoi la deuxième requête de sélection avec distincte ne fonctionne pas ??
Il probablement « échoue » Distinct pour la même raison, il « échoue » avec ORDER BY, http://www.sqlmag.com /article/sql-server/multi-row-variable-assignment-and-order-by.aspx –
+1 Wow, Thanku beaucoup ... l'explication m'a donné un sourire. – satya