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


MSSQL Select och addera Alias värden

Postades av 2008-12-10 23:53:55 - Jan Bulér, i forum sql-server/msde, Tråden har 6 Kommentarer och lästs av 1443 personer

Har ett litet problem med en SELECT sats i MSSQL 2008 Express

Den här fungerar bra
<code>
SELECT VerkID,
(SELECT SUM(columnX) AS Expr1
FROM Table1
WHERE (t3.VerkID = VerkID)) AS Sum1,
(SELECT SUM(columnY) AS Expr1
FROM Table2
WHERE (t3.VerkID = VerkID)) AS Sum2
FROM Table3 AS t3
</code>

men jag vill även lägga till en total, Sum1 + Sum2, men får då ett felmeddelande som säger att det är "invalid column name". Går det inte att använda Alias-namnen på så sätt i Select-uttrycket? Det går ju att använda dem i t ex Order By Sum1

<code>
SELECT VerkID,
(SELECT SUM(columnX) AS Expr1
FROM Table1
WHERE (t3.VerkID = VerkID)) AS Sum1,
(SELECT SUM(columnY) AS Expr1
FROM Table2
WHERE (t3.VerkID = VerkID)) AS Sum2,
(Sum1 + Sum2) AS Total
FROM Table3 AS t3
</code>


Svara

Sv: MSSQL Select och addera Alias värden

Postades av 2008-12-11 09:37:41 - Niklas Jansson

Det går väl att slänga på en extra fråga bara?

SELECT Sum1, Sum2, (Sum1 + Sum2) AS Total	
FROM (SELECT     VerkID, 
             (SELECT     SUM(columnX) AS Expr1
                FROM         Table1
                WHERE      (t3.VerkID = VerkID)) AS Sum1,
             (SELECT     SUM(columnY) AS Expr1
                FROM          Table2
                WHERE      (t3.VerkID = VerkID)) AS Sum2,
FROM         Table3 AS t3)


Sen föredrar jag ju personligen att inte lägga anrop i kolumnangivelserna. Har du någon speciell anledning, för annars borde du väl kunna göra den första delen med två joinar istället?

SELECT t3.VerkID, t1.sum As Sum1, t2.sum as Sum2
FROM ((table3 as t3 LEFT JOIN
(SELECT VerkID, SUM(ColumnX) FROM table1 GROUP BY VerkID) AS t1) LEFT JOIN
(SELECT VerkID, SUM(ColumnY) FROM table2 GROUP BY VerkID) AS t2)


Svara

Sv: MSSQL Select och addera Alias värden

Postades av 2008-12-11 09:38:51 - Håkan Borneland

Nej du kan inte göra så, alias är bara "synliga" i ORDER BY precis som du skrev.
För att slippa dubblera koden så kan du använda en CTE (ommon Table Expression).

<code>
; WITH GetSum AS
(
SELECT
VerkID,
(SELECT SUM(columnX) FROM Table1 WHERE (t3.VerkID = VerkID)) AS Sum1,
(SELECT SUM(columnY) FROM Table2 WHERE (t3.VerkID = VerkID)) AS Sum2
FROM Table3 AS t3
)

SELECT VerkID, Sum1, Sum2, Sum1 + Sum2 AS Total FROM GetSum;
</code>


Svara

Sv:MSSQL Select och addera Alias värden

Postades av 2008-12-11 10:05:23 - Niklas Jansson

...eller så gör man enligt mitt, lite enklare sätt?


Svara

Sv: MSSQL Select och addera Alias värden

Postades av 2008-12-11 10:32:14 - Håkan Borneland

Det beror nog på tycke och smak vad man tycker är "enklare".
Båda (ditt första exempel) gör jobbet.
Men man spar ju ca 15 - 20 tecken på ditt förslag (om det nu var det som var enklare??).
För övrigt så behöver man ta bort ett komma,
och lägga till ett alias på den yttre för att ditt förslag ska "flyga".
Båda ger också samma exekverings plan.
:-)


Svara

Sv: MSSQL Select och addera Alias värden

Postades av 2008-12-11 11:32:34 - Jan Bulér

Tänkte inte på att slänga på en extra fråga som Niklas föreslog sen får jag se om jag använder JOIN versionen eller inte.

Nu har man lärt sig något nytt igen.

Tack för hjälpen och God Jul


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 615
27 953
271 709
5 603
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