Announcement

Collapse
No announcement yet.

Insert in nicht vorhandene Spalten...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Insert in nicht vorhandene Spalten...

    Ich habe folgenden nicht funktionierenden SQL:

    INSERT INTO Table2
    (A, xxx, yyy, B, C, D)
    SELECT distinct Top 1
    A, xxx, yyy, B, C, D
    FROM Table 1
    order by A desc, xxx desc, yyy desc

    -> Das Problem ist:
    In der Tabelle 2 gibt es keine Spalten xxx und yyy.
    In den Select distinct müssen aber die beiden Spalten rein, sonst motzt er.
    (weil danach sortiert wird)
    Kann ich im Insert oben irgendwelche 'Dummy-Spalten' angeben?

  • #2
    Dann lass doch die Spalten weg:

    INSERT INTO Table2
    (A, B, C, D)
    SELECT distinct Top 1
    A, B, C, D
    FROM Table 1
    order by A desc, xxx desc, yyy desc

    Comment


    • #3
      Originally posted by Bernhard Geyer View Post
      Dann lass doch die Spalten weg:
      Das funktioniert nicht, bei einem distinct müssen die Sortierspalten auch im Select sein, sagt die Fehlermeldung.

      Comment


      • #4
        Wie wäres damit:

        [highlight=SQL]CREATE Table #Dummy
        (A sysname,
        B varchar(2)
        )
        GO

        INSERT INTO #Dummy
        (A, B)
        SELECT SUB.name, SUB.xtype
        FROM (SELECT DISTINCT TOP 1 name, xtype, uid, info
        FROM sysobjects
        ORDER BY name, xtype, uid, info) AS SUB
        GO
        SELECT *
        FROM #Dummy
        GO

        DROP TABLE #Dummy
        GO
        [/highlight]
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Geht auch in einem einzigen Statement per CTE (CommonTableExpression):
          ;with tmp(A, xxx, yyy, B, C, D) AS
          ( SELECT distinct Top 1 A, xxx, yyy, B, C, D
          FROM Table1 order by A desc, xxx desc, yyy desc
          )
          INSERT INTO Table2 (A, B, C, D) select A, B, C, D from tmp
          bye,
          Helmut

          Comment


          • #6
            Danke für die Hilfen!

            Comment

            Working...
            X