Sql 每天必须跑一次。我将在存储过程中将今天的日期作为变量传递,并在其中添加1天。因此,我传入例如'2018-09-20 00:00',然后有第二个带有DATEADD的变量(DD,1,'2018-09-20 00:00')。这设置了我必须使用的日期范围。我尝试过
Sql 每天必须跑一次。我将在存储过程中将今天的日期作为变量传递,并在其中添加1天。因此,我传入例如'2018-09-20 00:00',然后有第二个带有DATEADD的变量(DD,1,'2018-09-20 00:00')。这设置了我必须使用的日期范围。我尝试过,sql,sql-server,datetime,pivot-table,Sql,Sql Server,Datetime,Pivot Table,每天必须跑一次。我将在存储过程中将今天的日期作为变量传递,并在其中添加1天。因此,我传入例如'2018-09-20 00:00',然后有第二个带有DATEADD的变量(DD,1,'2018-09-20 00:00')。这设置了我必须使用的日期范围。我尝试过设定一个新日期,但它认为午夜的任何事情都是同一天,而不是明天(如果有意义)。我尝试过设定一个新日期,但它认为午夜的任何事情都是同一天,而不是明天(如果有意义)。哇,这真的很有效!在CASE语句中,您是如何在结尾处添加值的?我是一名C#开发人员,
每天必须跑一次。我将在存储过程中将今天的日期作为变量传递,并在其中添加1天。因此,我传入例如'2018-09-20 00:00',然后有第二个带有DATEADD的变量(DD,1,'2018-09-20 00:00')。这设置了我必须使用的日期范围。我尝试过设定一个新日期,但它认为午夜的任何事情都是同一天,而不是明天(如果有意义)。我尝试过设定一个新日期,但它认为午夜的任何事情都是同一天,而不是明天(如果有意义)。哇,这真的很有效!在CASE语句中,您是如何在结尾处添加值的?我是一名C#开发人员,很难将我的头脑从C#开发转到SQL。再次感谢你,你太慷慨了!这是一个关于
CASE WHEN
shortCASE WHEN
可以在行中编写if…else
的链接。哇,这真的很好用!在CASE语句中,您是如何在结尾处添加值的?我是一名C#开发人员,很难将我的头脑从C#开发转到SQL。再次感谢你,你太慷慨了!这是一个关于CASE WHEN
shortCASE WHEN
可以在行中写入if…else
的链接。
DECLARE @_SerialNumber NVARCHAR(MAX)
DECLARE @_DateFrom DATETIME
DECLARE @_DateTo DATETIME
SET @_SerialNumber = '2209'
SET @_DateFrom = '2018-09-20 00:00'
SET @_DateTo = DATEADD(DD, 1, @_DateFrom)
SELECT [Serial],
[Channel],
[ReadingDate],
[00:15],[00:30],[00:45],[01:00],[01:15],[01:30],[01:45],[02:00],[02:15],[02:30],[02:45],[03:00],
[03:15],[03:30],[03:45],[04:00],[04:15],[04:30],[04:45],[05:00],[05:15],[05:30],[05:45],[06:00],
[06:15],[06:30],[06:45],[07:00],[07:15],[07:30],[07:45],[08:00],[08:15],[08:30],[08:45],[09:00],
[09:15],[09:30],[09:45],[10:00],[10:15],[10:30],[10:45],[11:00],[11:15],[11:30],[11:45],[12:00],
[12:15],[12:30],[12:45],[13:00],[13:15],[13:30],[13:45],[14:00],[14:15],[14:30],[14:45],[15:00],
[15:15],[15:30],[15:45],[16:00],[16:15],[16:30],[16:45],[17:00],[17:15],[17:30],[17:45],[18:00],
[18:15],[18:30],[18:45],[19:00],[19:15],[19:30],[19:45],[20:00],[20:15],[20:30],[20:45],[21:00],
[21:15],[21:30],[21:45],[22:00],[22:15],[22:30],[22:45],[23:00],[23:15],[23:30],[23:45],[00:00]
--INTO [Staging].[PivotedData]
FROM(
SELECT
SerialNumber AS [Serial],
ChannelName AS [Channel],
CAST(ReadingDate AS DATE) AS [ReadingDate],
CAST(ReadingDate AS TIME(0)) AS [ReadingTime],
ChannelValue AS [Value]
FROM [Staging].[UriData]
WHERE
ChannelName IN (SELECT ChannelName FROM Staging.ActiveChannels )
AND ReadingDate > @_DateFrom AND ReadingDate <= @_DateTo
AND SerialNumber = @_SerialNumber
AND Processed = 0
AND ChannelName = 'm1'
) AS [Raw]
PIVOT
(
MAX( [Value] ) FOR [ReadingTime] IN( [00:15],[00:30],[00:45],[01:00],[01:15],[01:30],[01:45],[02:00],
[02:15],[02:30],[02:45],[03:00],[03:15],[03:30],[03:45],[04:00],
[04:15],[04:30],[04:45],[05:00],[05:15],[05:30],[05:45],[06:00],
[06:15],[06:30],[06:45],[07:00],[07:15],[07:30],[07:45],[08:00],
[08:15],[08:30],[08:45],[09:00],[09:15],[09:30],[09:45],[10:00],
[10:15],[10:30],[10:45],[11:00],[11:15],[11:30],[11:45],[12:00],
[12:15],[12:30],[12:45],[13:00],[13:15],[13:30],[13:45],[14:00],
[14:15],[14:30],[14:45],[15:00],[15:15],[15:30],[15:45],[16:00],
[16:15],[16:30],[16:45],[17:00],[17:15],[17:30],[17:45],[18:00],
[18:15],[18:30],[18:45],[19:00],[19:15],[19:30],[19:45],[20:00],
[20:15],[20:30],[20:45],[21:00],[21:15],[21:30],[21:45],[22:00],
[22:15],[22:30],[22:45],[23:00],[23:15],[23:30],[23:45],[00:00])
) AS pvt
ORDER BY ReadingDate DESC, Channel, [Serial]
-----------------------------------------------------------------------------------------------------------------------------
Serial | Channel | ReadingDate | 00:15 | 00:30 | 00:45 | 01:00 | 01:15 <--- ReadingTime ---> 23:15 | 23:30 | 23:45 | 00:00
-----------------------------------------------------------------------------------------------------------------------------
2209 | m1 | 21/09/2018 | NULL | NULL | NULL | NULL | NULL <----> NULL | NULL | NULL | 20586
2209 | m1 | 20/09/2018 | 20138 | 20140 | 20143 | 20145 | 20148 <----> 20580 | 20582 | 20584 | NULL
-----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------
Serial | Channel | ReadingDate | 00:15 | 00:30 | 00:45 | 01:00 | 01:15 <--- ReadingTime ---> 23:15 | 23:30 | 23:45 | 00:00
-----------------------------------------------------------------------------------------------------------------------------
2209 | m1 | 20/09/2018 | 20138 | 20140 | 20143 | 20145 | 20148 <----> 20580 | 20582 | 20584 | 20586
-----------------------------------------------------------------------------------------------------------------------------
SELECT [Serial],
[Channel],
[ReadingDate],
[00:15],[00:30],[00:45],[01:00],[01:15],[01:30],[01:45],[02:00],[02:15],[02:30],[02:45],[03:00],
[03:15],[03:30],[03:45],[04:00],[04:15],[04:30],[04:45],[05:00],[05:15],[05:30],[05:45],[06:00],
[06:15],[06:30],[06:45],[07:00],[07:15],[07:30],[07:45],[08:00],[08:15],[08:30],[08:45],[09:00],
[09:15],[09:30],[09:45],[10:00],[10:15],[10:30],[10:45],[11:00],[11:15],[11:30],[11:45],[12:00],
[12:15],[12:30],[12:45],[13:00],[13:15],[13:30],[13:45],[14:00],[14:15],[14:30],[14:45],[15:00],
[15:15],[15:30],[15:45],[16:00],[16:15],[16:30],[16:45],[17:00],[17:15],[17:30],[17:45],[18:00],
[18:15],[18:30],[18:45],[19:00],[19:15],[19:30],[19:45],[20:00],[20:15],[20:30],[20:45],[21:00],
[21:15],[21:30],[21:45],[22:00],[22:15],[22:30],[22:45],[23:00],[23:15],[23:30],[23:45],[00:00]
FROM(
SELECT
Serial AS [Serial],
Channel AS [Channel],
(CASE WHEN CAST(ReadingDate AS DATE) > CAST(@_DateFrom AS DATE)
THEN CAST(@_DateFrom AS DATE)
ELSE CAST(ReadingDate AS DATE)
END) AS [ReadingDate],
CAST(ReadingDate AS TIME) AS [ReadingTime],
Value AS [Value]
FROM UriData
WHERE ReadingDate > @_DateFrom AND ReadingDate <= @_DateTo AND Serial = '2209'
) AS [Raw]
PIVOT
(
MAX( [Value] ) FOR [ReadingTime] IN( [00:15],[00:30],[00:45],[01:00],[01:15],[01:30],[01:45],[02:00],
[02:15],[02:30],[02:45],[03:00],[03:15],[03:30],[03:45],[04:00],
[04:15],[04:30],[04:45],[05:00],[05:15],[05:30],[05:45],[06:00],
[06:15],[06:30],[06:45],[07:00],[07:15],[07:30],[07:45],[08:00],
[08:15],[08:30],[08:45],[09:00],[09:15],[09:30],[09:45],[10:00],
[10:15],[10:30],[10:45],[11:00],[11:15],[11:30],[11:45],[12:00],
[12:15],[12:30],[12:45],[13:00],[13:15],[13:30],[13:45],[14:00],
[14:15],[14:30],[14:45],[15:00],[15:15],[15:30],[15:45],[16:00],
[16:15],[16:30],[16:45],[17:00],[17:15],[17:30],[17:45],[18:00],
[18:15],[18:30],[18:45],[19:00],[19:15],[19:30],[19:45],[20:00],
[20:15],[20:30],[20:45],[21:00],[21:15],[21:30],[21:45],[22:00],
[22:15],[22:30],[22:45],[23:00],[23:15],[23:30],[23:45],[00:00])
) AS pvt
ORDER BY ReadingDate DESC, Channel, [Serial]