Okey, ovenstående vil virke, men jeg har nogle flere rækker som jeg ikke troede var et problem, men det er vidst her det rigtige problem ligger. Hvis jeg har 2 kolonner mere, quantity og head type som også er forskelligt, så kan jeg ikke nøjes med MAX på ID, kan du mon hjælpe
SELECT Id, ItemId, ItemName, Quantity, HeadType FROM HentFraHis INNER JOIN Getdate ON HentFraHis.Id = Getdate.Id
OK, så du vil have HeadType med, men du er ligeglad med hvilken du får?
SELECT MAX(Id) AS Id, ItemID, ItemName, MIN(HeadType) AS HeadType FROM FROM HentFraHis INNER JOIN Getdate ON HentFraHis.Id = Getdate.Id GROUP BY ItemID, ItemName
MIN (minimum) giver den mindste af værdierne, og anvendt på en tekst giver det den først alfabetisk. I dette tilfælde ville det altså være sms der kom ud.
Reglen for GROUP BY er at alle kolonner du SELECT'er skal være med i GROUP BY, eller hentes med en Aggregate Function, dvs MIN, MAX, SUM, AVG eller COUNT.
Jeg har tilføjet AS for de to værdier, så de får et navn i din query
Ja, vi kommer tættere på, men ved ikke om du så at jeg havde tilføjet en kolonne som hed Quantity og den giver mig også problemer, da de også varierer. og derfor vil den vise flere linier og jeg kan ikke bruge min eller max på quantity og quantity skal vises i min query, nogen forslag
Hvis der findes forskellige quantity for en række, og du skal bruge dem alle, så kan det i sagens natur ikke samles til én række. Med mindre du kan bruge det kommasepareret (dårlig løsning, tung at trække for databasen).
Min anbefaling er at lade din application loop'e gennem rækkerne, i stedet for at insistere på at det skal samles fra databasens side.
Jeg skal ikke bruge alle quantity, jeg skal kun bruge den sidste som ville være id 19 med 5 stk i quantity. Grunden til at jeg vil have databasen til at gøre det, er at det bruges i et view. Er anbefaling stadig at loope gennem rækkkerne, eller er der en mulighed
Det vil jeg lave til et view, og når jeg så vil have resten af data med, vil jeg lave et view der joiner dette view med de relevante tabeller. Et view i et view, så at sige.
Jeg er lige nødt til at få overblik over hvilke kolonner der er i de forskellige tabeller, ellers kan jeg ikke lave det. Kan du give mig strukturen for de to tabeller?
Okey jeg bruger faktisk 3 tabeller, men troede løsningen var mere simpel end det, så derfor oplyste jeg mit eksempel i en simpel udgave, me her kommer de komplette tabeller og mit view, som det er nu giver det samme udgangspunkt som oplyst tidligere at itemid 101 kommer ud flere gange og jeg er kun interesseret i det sidste, håber nedenstående kan hjælpe
OK, så har jeg en anden løsning. Jeg laver en subquery i stedet for GROUP BY
VIEW dbo.QySpGetItemToHis AS SELECT DISTINCT TOP 100 PERCENT dbo.TbPurchaseLine.PurLineId, dbo.TbPurchaseLine.PurLineItemId, dbo.TbPurchaseLine.PurLineItemName, dbo.TbPurchaseLine.PurLineItemUnit, dbo.TbPurchaseLine.PurLineDepId, dbo.TbPurchaseLine.PurLineUpdated, dbo.TbPurchaseLine.PurCartHeadType, dbo.TbPurchaseLine.PurLineQuantity, dbo.TbPurchaseLine.PurLineQuantityShipped dbo.TbVendor.VendorName, dbo.TbItem.ItemId, dbo.TbItem.ItemPacking, dbo.TbItem.ItemQtyPacking, FROM dbo.TbPurchaseLine LEFT OUTER JOIN dbo.TbItem ON dbo.TbPurchaseLine.PurLineItemId = dbo.TbItem.ItemId LEFT OUTER JOIN dbo.TbVendor ON dbo.TbPurchaseLine.PurLineVendorId = dbo.TbVendor.VendorId
WHERE dbo.TbPurchaseLine.PurLineId = (SELECT MAX(dbo.TPL2.PurLineId) FROM dbo.TbPurchaseLine TPL2 WHERE TPL2.PurLineItemId = dbo.TbPurchaseLine.PurLineItemId)
Dette virker hvis du for alle kolonner i TbPurchaseLine er tilfreds med at få de data der kommer fra rækken med det højeste PurLineId for pågældende PurLineItemId
WHERE dbo.TbPurchaseLine.PurLineId = (SELECT MAX(dbo.TPL2.PurLineId) FROM dbo.TbPurchaseLine TPL2 WHERE TPL2.PurLineItemId = dbo.TbPurchaseLine.PurLineItemId)
TPL2 er et alias for TbPurchaseLine, der jo nu findes i to forekomster i queryen
WHERE dbo.TbPurchaseLine.PurLineId = (SELECT MAX(TPL2.PurLineId) FROM dbo.TbPurchaseLine TPL2 WHERE TPL2.PurLineItemId = dbo.TbPurchaseLine.PurLineItemId)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.