2016-04-29 7 views
0

Also muss ich diese SELECT-Anweisung in eine Excel-Datei exportieren (sagen wir zu meinem Desktop), aber ich muss es innerhalb der Abfrage getan werden, so dass es jedes Mal eine neue Datei (überschreibt es) das Skript wird von Anfang bis Ende ausgeführt. SSIS ist keine Option und auch kein Standard-Export. Siehe SELECT-Anweisung unten.Export SELECT-Anweisung in Excel in Abfrage

SELECT 
    Sub_Company, 
    GL_Account, 
    CAST(SUM(Debits) AS DECIMAL(18,2)) AS Debits, 
    CAST(SUM(Credits) AS DECIMAL(18,2)) AS Credits, 
    CAST(SUM([P&L_Impact]) AS DECIMAL(18,2)) AS [P&L_Impact], 
    COUNT(*) AS Record_Count 
FROM 
(
    SELECT * 
    FROM [FL_SQL_Training].[dbo].[Combined_GL] 
    WHERE 
     Company = 'US' AND 
     GL_Source = 'Consolidation' 
) A 
WHERE 
    GL_Journal_Header_Description LIKE '%UK%' OR 
    GL_Journal_Header_Description LIKE '%CAD%' OR 
    GL_Journal_Header_Description LIKE '%MEX%' OR 
    GL_Journal_Header_Description LIKE '%Hon%' 
GROUP BY 
    Sub_Company, 
    GL_Account 

Danke,

+0

Was genau ein "Standard-Export" darstellt das ist nicht erlaubt? Sie können "innerhalb" einer Abfrage nicht wirklich tun. –

+0

Dinge wie der Export-Assistent, Kopieren/Einfügen usw. Es gibt keinen Exportbefehl in SQL Server? Ich dachte, es gibt eine Möglichkeit, OUTPUT zu verwenden und die Excel-Treiber in SQL aufzurufen. –

Antwort

0
SELECT 
    Sub_Company, 
    GL_Account, 
    CAST(SUM(Debits) AS DECIMAL(18,2)) AS Debits, 
    CAST(SUM(Credits) AS DECIMAL(18,2)) AS Credits, 
    CAST(SUM([P&L_Impact]) AS DECIMAL(18,2)) AS [P&L_Impact], 
    COUNT(*) AS Record_Count 
    INTO OUTFILE '/tmp/accounts.csv' 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n'; 
FROM 
(
    SELECT * 
    FROM [FL_SQL_Training].[dbo].[Combined_GL] 
    WHERE 
     Company = 'US' AND 
     GL_Source = 'Consolidation' 
) A 
WHERE 
    GL_Journal_Header_Description LIKE '%UK%' OR 
    GL_Journal_Header_Description LIKE '%CAD%' OR 
    GL_Journal_Header_Description LIKE '%MEX%' OR 
    GL_Journal_Header_Description LIKE '%Hon%' 
GROUP BY 
    Sub_Company, 
    GL_Account 
+0

In der Tabellenaliaszeile "A" ist ein Fehler aufgetreten. Ich bin mir nicht sicher, wo ich das sonst hinstellen sollte. –

+0

Könnten Sie bitte den Fehler kopieren/einfügen? –

0

Erstellen Sie die Datenquelle Excel und die Werte einfügen,

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable 

Weitere Informationen verfügbar sind hier http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926

+0

Dies ist für SQL Server natürlich ... –

+0

Kicks einen Fehler leider: OLE DB-Provider 'Microsoft.Jet.OLEDB.4.0' kann nicht für verteilte Abfragen verwendet werden, da der Anbieter für die Ausführung im Singlethread-Apartment-Modus konfiguriert ist. –

+0

Sie müssen Openrowset aktivieren, da es aus Sicherheitsgründen deaktiviert ist: sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'Verteilte Ad-Hoc-Anfragen', 1; RECONFIGURE; GO –