チームメンバーで、問題が原因でここに投稿したクエリを書き直しました。私の前の質問からの提供された回答からの様々な情報源を使用して、他の解決方法をチェックし、質問は意図した通りに機能する。 HOWEVERこのクエリを埋め込み、バックグラウンドで実行する必要がありますが、問題は実際にセルに結果を表示する必要があります。 PRINTクエリの機能は、実行すると実際にEXCELでウィンドウがポップアップしますが(DUH、意図どおり)、何をしたいのですか。PRINTEDの結果が表示されます。クエリはスプレッドシート内で自動的に実行されるので、SSMSからファイルにエクスポートするオプションはオプションではありません.OUR DBAは私たちが仕事として走らせることのできないDBを使っているのでかなりファンキーです。 ..再び助けていただければ幸いです。PRINTの結果をEXCELで表示
Declare @StartDate1 as DateTime
Declare @StartDate2 as DateTime
Declare @EndDate1 as DateTime
Declare @EndDate2 as DateTime
Declare @TodaysDate1 as DateTime
Declare @TodaysDate2 as DateTime
Declare @Yesterday as DateTime
Declare @TotalRecords1 int = 7
Declare @TotalRecords2 int = 7
set @TodaysDate1 = GETDATE()
set @TodaysDate2 = @TodaysDate1
set @Yesterday = DATEADD(day,-1,@TodaysDate1)
-------------------------------------------------------------------
-- For AM Shift Data Readings --
-------------------------------------------------------------------
set @StartDate1 = cast(convert(varchar(4), datepart(yyyy, @Yesterday)) + '-' +
convert(varchar(2), datepart(mm, @Yesterday)) + '-' +
convert(varchar(2), datepart(dd, @Yesterday)) + ' ' +
'17:00' as datetime)
set @EndDate1 = cast(convert(varchar(4), datepart(yyyy, @TodaysDate1)) + '-' +
convert(varchar(2), datepart(mm, getdate())) + '-' +
convert(varchar(2), datepart(dd, getdate())) + ' ' +
'04:59' as datetime)
-------------------------------------------------------------------
-- For PM Shift Data Readings --
-------------------------------------------------------------------
set @StartDate2 = cast(convert(varchar(4), datepart(yyyy, @Yesterday)) + '-' +
convert(varchar(2), datepart(mm, @Yesterday)) + '-' +
convert(varchar(2), datepart(dd, @Yesterday)) + ' ' +
'05:00' as datetime)
set @EndDate2 = cast(convert(varchar(4), datepart(yyyy, @Yesterday)) + '-' +
convert(varchar(2), datepart(mm, @Yesterday)) + '-' +
convert(varchar(2), datepart(dd, @Yesterday)) + ' ' +
'16:59' as datetime)
--------Material Scan Table--------
SELECT
@TotalRecords1=(SELECT Count(*) FROM [Piston_TOL_PROD_DB].[dbo].[tblLOT_CTRL_Active_Component] WHERE Close_Time_Stamp between @StartDate1 and @EndDate1),
@TotalRecords2=(SELECT Count(*) FROM [Piston_TOL_PROD_DB].[dbo].[tblLOT_CTRL_Active_Component] WHERE Close_Time_Stamp between @StartDate2 and @EndDate2)
WHILE @TotalRecords1 = 0 AND @TotalRecords2 = 0
BEGIN
set @TodaysDate1 = DATEADD(day,-1,@TodaysDate1)
set @TodaysDate2 = DATEADD(day,-1,@TodaysDate2)
set @Yesterday = DATEADD(day,-1,@TodaysDate1)
-------------------------------------------------------------------
-- For AM Shift Data Readings --
-------------------------------------------------------------------
set @StartDate1 = cast(convert(varchar(4), datepart(yyyy, @Yesterday)) + '-' +
convert(varchar(2), datepart(mm, @Yesterday)) + '-' +
convert(varchar(2), datepart(dd, @Yesterday)) + ' ' +
'17:00' as datetime)
set @EndDate1 = cast(convert(varchar(4), datepart(yyyy, @TodaysDate1)) + '-' +
convert(varchar(2), datepart(mm, getdate())) + '-' +
convert(varchar(2), datepart(dd, getdate())) + ' ' +
'04:59' as datetime)
-------------------------------------------------------------------
-- For PM Shift Data Readings --
-------------------------------------------------------------------
set @StartDate2 = cast(convert(varchar(4), datepart(yyyy, @TodaysDate2)) + '-' +
convert(varchar(2), datepart(mm, getdate())) + '-' +
convert(varchar(2), datepart(dd, getdate())) + ' ' +
'05:00' as datetime)
set @EndDate2 = cast(convert(varchar(4), datepart(yyyy, @TodaysDate2)) + '-' +
convert(varchar(2), datepart(mm, getdate())) + '-' +
convert(varchar(2), datepart(dd, getdate())) + ' ' +
'16:59' as datetime)
SELECT
@TotalRecords1=(SELECT Count(*) FROM [Piston_TOL_PROD_DB].[dbo].[tblLOT_CTRL_Active_Component] WHERE Close_Time_Stamp between @StartDate1 and @EndDate1),
@TotalRecords2=(SELECT Count(*) FROM [Piston_TOL_PROD_DB].[dbo].[tblLOT_CTRL_Active_Component] WHERE Close_Time_Stamp between @StartDate2 and @EndDate2)
IF (SELECT Count(*) FROM [Piston_TOL_PROD_DB].[dbo].[tblLOT_CTRL_Active_Component] WHERE Close_Time_Stamp between @StartDate1 and @EndDate1) > 0
BREAK
ELSE
IF (SELECT Count(*) FROM [Piston_TOL_PROD_DB].[dbo].[tblLOT_CTRL_Active_Component] WHERE Close_Time_Stamp between @StartDate2 and @EndDate2) > 0
BREAK
ELSE
CONTINUE
END
PRINT '1st Shift LOT Trace Scans ending'
PRINT @EndDate2
PRINT @TotalRecords2
PRINT ' '
PRINT '2nd Shift LOT Trace Scans ending'
PRINT @EndDate1
PRINT @TotalRecords1
THESEたちは何とかEXCELを表示するために取得したいと思いSSMSで実行クエリからの実際の結果、次のとおりです。あなたは、テーブル変数にこれらを保存する代わりに、それらを印刷してみてください
1st Shift LOT Trace Scans ending
Jul 6 2016 4:59PM
64
2nd Shift LOT Trace Scans ending
Jul 7 2016 4:59AM
73
あなたの結果はあなたの質問の期待される結果と一致しません。 'CONCAT'はすべて一緒に文字列を追加します。結果の文字列を 'PRINT'または' SELECT'することができます。 – Ash
私の元の質問は、EXCELシートから実行できるように、クエリの結果を行として取得できなかったためです。これをどのように行うのでしょうか。 EXCEL内から実行するとPRINT結果が機能しません。これらの結果を得るために、CONCATを使用して、結果を自動的に実行されるスプレッドシート内のさらなる計算に使用できるように、結果をCONCATを使用してDBのLotTraceとEXCELの行結果として表示させました。 – Edward