2010-12-09 9 views
0

Ma question est LAME. JE CONNAIS! Mais je ne peux pas le comprendre, encore! Voici ce que je veux faire: J'ai un ensemble d'enregistrements qui est en double à 'JobNumber' et 'JobID'. Voici ma requête qui sélectionne les enregistrements:SELECTION DE DISTINCT Enregistrements

SELECT dbo.InvoiceLineDetail.JobNumber, 
    dbo.InvoiceLineDetail.PatientName, 
    dbo.InvoiceLineDetail.CustomerAccountName AS Name, 
    COALESCE(InvoiceLineDetail.ShipAddressAddr2 + ' ', 
     '') + COALESCE(InvoiceLineDetail.ShipAddressAddr3+' ', 
     '') + COALESCE(InvoiceLineDetail.ShipAddressAddr4 +' ', 
     '') + coalesce(InvoiceLineDetail.ShipAddressCity +' ', 
     '') + COALESCE(InvoiceLineDetail.ShipAddressState +' ', 
     '') + COALESCE(InvoiceLineDetail.ShipAddressCountry, 
     '') as [Address], 
    dbo.InvoiceLineDetail.ShipAddressPostalCode AS ZipCode, 
    dbo.JobStatus.JobTableId AS JobID, 
    dbo.JobStatus.OrderType, 
    dbo.JobStatus.ShipTrackingNumber as Tracking#, 
    dbo.JobStatus.ShipMethodTransmitted as TransmitMethod, 
    dbo.JobStatus.DateShipTransmitProcessed as DateProcessed, 
    dbo.JobStatus.ShipmentProcessedBy as ProcesssedBy, 
    dbo.JobStatus.Critical, 
    dbo.View_JobsToShipCount.JobsToShip, 
    dbo.JobStatus.ShipTransmitStatus as Status, 
    dbo.JobStatus.InvoiceStatus, 
    dbo.InvoiceLineDetail.Quantity 
FROM dbo.View_JobsToShipCount 
LEFT OUTER JOIN dbo.InvoiceLineDetail 
    ON dbo.View_JobsToShipCount.Name = dbo.InvoiceLineDetail.CustomerAccountName 
LEFT OUTER JOIN dbo.JobStatus 
    ON dbo.InvoiceLineDetail.JobID = dbo.JobStatus.JobTableId 

WHERE (dbo.InvoiceLineDetail.ChargeGroup = 'LENS') and ((dbo.JobStatus.InvoiceStatus = N'IR') OR 
    (dbo.JobStatus.ShipTransmitStatus = N'ReadyToShip')) 

Maintenant, je veux jobnumber et JOBID valeurs UNIQUE. Je reçois les mêmes enregistrements pour les deux.

Merci pour votre aide :)

+2

Avoir une barre de défilement, pas de lecture. Pas de lecture, pas d'aide ... –

+0

** vous devez apprendre à formater votre code mieux! ** +1 à tous ceux qui veulent regarder ce SQL désordonné !!! Yuck –

+0

Ouais, cela pourrait utiliser un peu de reformater l'amour pour rendre la réponse plus facile ... – Ryan

Répondre

3

Si toutes les autres informations sont les mêmes, il suffit d'ajouter un « DISTINCT » à votre requête.

REMARQUE: Les alias de table contribuent vraiment à la lisibilité ....

+0

AJOUTÉ DISTINCT à la requête: SELECT DISTINCT dbo.InvoiceLineDetail.JobNumber. Mais il me donne cette erreur: Le type de données ntext ne peut pas être sélectionné comme DISTINCT car il n'est pas comparable. –

+0

Pourquoi diable utilisez-vous des types de données TEXT? Quel RDBMS est-ce? – JNK

+2

Je vais devoir aller avec JNK sur celui-ci ..... obtenir un distinct sur un texte est juste une mauvaise nouvelle. Vous devrez peut-être faire une requête intermédiaire pour obtenir les enregistrements uniques, puis obtenir les valeurs de texte. –