Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Group By och Order By i Union

Postades av 2005-04-19 13:36:08 - Erik Viklund, i forum sql-server/msde, Tråden har 2 Kommentarer och lästs av 887 personer

Har en sql sträng:

<code>
SELECT 'Arbetstid' AS Kategori,'Närvaro' AS UnderKat,dbo.Company.CompanyName AS Företagsnamn,dbo.Employee.Department AS Avdelning, dbo.Employee.EmployeeName AS Namn, dbo.Presence.SalaryArtPres AS Lönetyp,
ROUND(SUM(CAST(REPLACE(dbo.Presence.CalcPresTime,',', '.') AS float)),2) AS Beraknadtid,ROUND(CAST(REPLACE(dbo.Employee.WorkTimeWeek, ',', '.') AS float)/7,2) as Normtid
FROM dbo.Presence INNER JOIN
dbo.Employee ON dbo.Presence.EmployeeNr = dbo.Employee.EmployeeNr INNER JOIN
dbo.Company ON dbo.Employee.CompanyNr = dbo.Company.CompanyNr
WHERE (dbo.Employee.Department = 'MARKNAD') And dbo.Presence.PresenceDate BETWEEN '2005-01-01' And '2005-01-30' And dbo.Employee.PersonalKategory = '01'
UNION
SELECT 'Frånvaro' AS Kategori,'Frånvaro' AS UnderKat,dbo.Company.CompanyName AS Företagsnamn,dbo.Employee.Department AS Avdelning, dbo.Employee.EmployeeName AS Namn, dbo.Absence.SalaryArtAbs AS LöneTyp,
ROUND(SUM(CAST(REPLACE(dbo.Absence.CalcAbsTime,',', '.') AS float)),2) AS Beraknadtid, '0' As Normtid
FROM dbo.Absence INNER JOIN
dbo.Employee ON dbo.Absence.EmployeeNr = dbo.Employee.EmployeeNr INNER JOIN
dbo.Company ON dbo.Employee.CompanyNr = dbo.Company.CompanyNr
WHERE (dbo.Employee.Department = 'MARKNAD') And dbo.Absence.AbsenceDate BETWEEN '2005-01-01' And '2005-01-30' And dbo.Employee.PersonalKategory = '01'
</code>
Varför kan jag inte göra Group BY och Order By på båda selectarna? På detta sätt:

<code>
SELECT 'Arbetstid' AS Kategori,'Närvaro' AS UnderKat,dbo.Company.CompanyName AS Företagsnamn,dbo.Employee.Department AS Avdelning, dbo.Employee.EmployeeName AS Namn, dbo.Presence.SalaryArtPres AS Lönetyp,
ROUND(SUM(CAST(REPLACE(dbo.Presence.CalcPresTime,',', '.') AS float)),2) AS Beraknadtid,ROUND(CAST(REPLACE(dbo.Employee.WorkTimeWeek, ',', '.') AS float)/7,2) as Normtid
FROM dbo.Presence INNER JOIN
dbo.Employee ON dbo.Presence.EmployeeNr = dbo.Employee.EmployeeNr INNER JOIN
dbo.Company ON dbo.Employee.CompanyNr = dbo.Company.CompanyNr
WHERE (dbo.Employee.Department = 'MARKNAD') And dbo.Presence.PresenceDate BETWEEN '2005-01-01' And '2005-01-30' And dbo.Employee.PersonalKategory = '01'
GROUP BY dbo.Company.CompanyName,dbo.Employee.Department,dbo.Employee.EmployeeName,dbo.Presence.SalaryArtAbs
Order BY dbo.Employee.EmployeeName
<code>
Och sen..
<code>
UNION
SELECT 'Frånvaro' AS Kategori,'Frånvaro' AS UnderKat,dbo.Company.CompanyName AS Företagsnamn,dbo.Employee.Department AS Avdelning, dbo.Employee.EmployeeName AS Namn, dbo.Absence.SalaryArtAbs AS LöneTyp,
ROUND(SUM(CAST(REPLACE(dbo.Absence.CalcAbsTime,',', '.') AS float)),2) AS Beraknadtid, '0' As Normtid
FROM dbo.Absence INNER JOIN
dbo.Employee ON dbo.Absence.EmployeeNr = dbo.Employee.EmployeeNr INNER JOIN
dbo.Company ON dbo.Employee.CompanyNr = dbo.Company.CompanyNr
WHERE (dbo.Employee.Department = 'MARKNAD') And dbo.Absence.AbsenceDate BETWEEN '2005-01-01' And '2005-01-30' And dbo.Employee.PersonalKategory = '01'

GROUP BY dbo.Company.CompanyName,dbo.Employee.Department,dbo.Employee.EmployeeName,dbo.Absence.SalaryArtAbs
Order BY dbo.Employee.EmployeeName
</code>

Kan man bara gruppera efter UNION:en? I så fall kan man ju inte gruppera om man har mer än en select. Eller?????


Svara

Sv: Group By och Order By i Union

Postades av 2005-04-19 14:30:01 - Göran Andersson

Du kan inte sortera frågorna var för sig, utan sorteringen gäller för det sammanslagna resultatet. Däremot tror jag att du ska kunna gruppera dem var för sig.

Du kan i och för sig göra en sortering i en nästlad select om du absolut behöver det. Typ:

select * from (select ... order by ...)
union
select * from (select ... order by ...)
order by ...

Tips: Ifall du inte är ute efter att få bort dubbletter mellan första och andra frågan så är det effektivare att använda "union all" än "union", just därför att den inte gör denna matchning mellan resultaten.


Svara

Sv:Group By och Order By i Union

Postades av 2005-05-06 16:43:22 - Erik Viklund

Ok.. I see..


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
613
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies