Setzen Sie zwei Zeilen aus der Tabelle in eine

EDIT: Es hat funktioniert Ich habe eine zweite view, um die Pivots zu halten, ich denke, das war verwirrend mich. Dann bearbeite ich meine Verknüpfung für den AmusementMeter-Tisch zu:

left join AmusementMeter as am_in on m.MachineId = am_in.MachineId and am_in.[Type] = '+' left join AmusementMeter as am_out on m.MachineId = am_out.MachineId and am_out.[Type] = '-' 

Jetzt kommt alles wieder auf eine Reihe.

Danke für die Hilfe.


Ich habe Probleme mit dieser Abfrage, mit Sql server 2012. Ich ziehe aus mehreren Tischen und ich habe Probleme mit nur einem jetzt. Für jede Maschine gibt es zwei AmusementMeter datasätze in der AmesementMeter Tabelle. Ich muss die beiden datasätze in der AmusementMeter-Tabelle bekommen, um als eine zu kommen, also habe ich nicht zwei Zeilen für jede MachineId in der zurückgegebenen Ausgabe.

Was ich habe:

  SELECT DISTINCT m.MachineId as 'Machine Id' , m.Name as 'Machine Name', mc.Name as 'Machine Class', m.InstallDate as 'Setup Date', m.Serial as 'Machine Serial Number', m.[Description] as 'Machine Description', l.ID as 'Location Id', l.Name as 'Location Name', m.DateMovedToLocation as 'Date moved to location', m.Manufacturer, m.PurchaseDate as 'Purchase Date', m.PurchasePrice as 'Purchase Price', m.PurchaseFrom as 'Purchase From', m.CabinetSerial as 'Cabinet Serial Number', m.Color as 'Cabinet Color', m.BillValidatorDescription as 'Bill Validator Description', CASE WHEN am.[Type] = '+' THEN am.Reading END AS 'IN Meter Reading', CASE WHEN am.[Type] = '+' THEN am.Value END AS 'IN Meter Value', CASE WHEN am.[Type] = '+' THEN am.Meter END AS 'IN Meter Digits', CASE WHEN am.[Type] = '-' THEN am.Reading END AS 'IN Meter Reading', CASE WHEN am.[Type] = '-' THEN am.Value END AS 'IN Meter Value', CASE WHEN am.[Type] = '-' THEN am.Meter END AS 'IN Meter Digits', CASE WHEN Pvt.[1] IS NULL THEN '' ELSE Pvt.[1] END AS 'REDEMPTION', CASE WHEN Pvt.[2] IS NULL THEN '' ELSE Pvt.[2] END AS 'MAX BET', CASE WHEN Pvt.[3] IS NULL THEN '' ELSE Pvt.[3] END AS 'JACKPOT CAP', CASE WHEN Pvt.[4] IS NULL THEN '' ELSE Pvt.[4] END AS '50 AND 100 STAT', CASE WHEN Pvt.[5] IS NULL THEN '' ELSE Pvt.[5] END AS 'MUTHA GOOSE KEY', CASE WHEN Pvt.[6] IS NULL THEN '' ELSE Pvt.[6] END AS 'LICENSE EXPIRATION YR', CASE WHEN Pvt.[7] IS NULL THEN '' ELSE Pvt.[7] END AS 'PERMIT NUMBER', CASE WHEN Pvt.[8] IS NULL THEN '' ELSE Pvt.[8] END AS 'GAGGLE VER 126', CASE WHEN Pvt.[9] IS NULL THEN '' ELSE Pvt.[9] END AS 'METER VAULT RIVETS ', CASE WHEN Pvt.[10] IS NULL THEN '' ELSE Pvt.[10] END AS 'ASSET ID TAG' FROM (SELECT mudfr.MachineId, mudfr.UDFieldId, mudfr.Value FROM MachineUserDefinedFieldRelation AS mudfr INNER JOIN MachineUserDefinedField AS mudf ON mudfr.UDFieldId = mudf.FieldId) AS pv PIVOT (Max(Value) FOR UDFieldId IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])) AS Pvt JOIN Machine AS m on m.MachineId = Pvt.MachineId JOIN MachineClass as mc on m.CategoryID = mc.ID JOIN Location as l on m.LocationID = l.ID INNER JOIN AmusementMeter as am on am.MachineId = m.MachineId 

Ausgabe (ich habe viel ausgeschnitten, in den Problemspalten gelassen): Lass mich nicht den Screenshot hinterlassen, sorry. Ich bekomme so etwas, wo ich habe MachineId zeigt sich zweimal. Die anderen Werte stammen aus der Tabelle AmuesmentMeter. Ich möchte, dass es nur einmal gezeigt wird und wir haben die Nullwerte die Werte, die dort Platz nehmen.

 550001 NULL NULL NULL 928204 0.25 6 550001 547563 0.25 6 NULL NULL NULL 

Was ich will: (Erwartete Ausgabe)

 550001 547563 0.25 6 928204 0.25 6 

Danke für die Hilfe.

Sie müssen eine GROUP BY Klausel auf m.MachineId und den MAX(columnname) für jede Spalte auswählen, die Sie "kombinieren" möchten.

Es ist keine ISNULL-function erforderlich, da MAX NULLS ignoriert

EDIT: Es hat funktioniert Ich habe eine zweite view, um die Pivots zu halten, ich denke, das war verwirrend mich. Dann bearbeite ich meine Verknüpfung für den AmusementMeter-Tisch zu:

 left join AmusementMeter as am_in on m.MachineId = am_in.MachineId and am_in.[Type] = '+' left join AmusementMeter as am_out on m.MachineId = am_out.MachineId and am_out.[Type] = '-' 

Jetzt kommt alles wieder auf eine Reihe.

Danke für die Hilfe.