2017-10-31 3 views
0

Ich habe Probleme beim Gruppieren meiner mehrere Spalte in SQL Server. Mir ist bekannt, dass Group by ordinals nicht funktioniert und ich auch nicht den Alias-Namen in Group by verwenden kann. Es ist mühsam, die Spalten aufzulisten, besonders wenn ich die Spalten in SELECT-Anweisungen formatiere und gewichtet habe.Gruppieren nach mehreren formatierten und gegossenen Spalten in SQL Server

z.B.

SELECT 
CONCAT('ABC',column1) AS col1, 
cast('XYZ AS VARCHAR) AS col2, 
column3 AS col3, 
cast(ISNULL(column4,0) AS MONEY)/100 AS col4, 
.... 
.... 
count(DISTINCT table2.ID) AS col15 
GROUP BY <> 

Oben ist eine Beispielabfrage, die ich benutze, und es ist komplex, wenn ich verschiedene Spalten von der unterschiedlichen Tabelle anwähle, die sie anschließt. Was ist die Lösung?

Antwort

0

Wenn Sie wirklich dieses Ergebnis erreichen wollen, sind die einzigen Mechanismen entweder eine Unterabfrage oder CTE zu verwenden:

Sub-Abfrage:

SELECT * 
FROM (
     SELECT 
      CONCAT('ABC',column1) AS col1, 
      cast('XYZ AS VARCHAR) AS col2, 
      column3 AS col3, 
      cast(ISNULL(column4,0) AS MONEY)/100 AS col4, 
      .... 
      .... 
      count(DISTINCT table2.ID) AS col15 
     ) 
GROUP BY <> 

Common Table Expression (CTE):

;WITH data AS (
    SELECT 
      CONCAT('ABC',column1) AS col1, 
      cast('XYZ AS VARCHAR) AS col2, 
      column3 AS col3, 
      cast(ISNULL(column4,0) AS MONEY)/100 AS col4, 
      .... 
      .... 
      count(DISTINCT table2.ID) AS col15 
    ) 
SELECT * 
FROM Data 
GROUP BY <> 
Verwandte Themen