0
我試圖轉換浮動表的列,以便它們不會顯示爲科學記數法。我試過以下,但它似乎並沒有工作:SQL從科學概念轉換爲字符串
Update TABLE
SET YTD = STR(YTD,12,2)
沒有任何影響,因爲我仍然可以在列的2.834566E + 07的值。
下面是完整的代碼:
declare @app_cur CURSOR
declare @Current_PV_Value float
declare @Current_Tagname varchar(100)
DECLARE @Year INT;
DECLARE @JanDate Datetime
DECLARE @FebDate Datetime
DECLARE @MarDate Datetime
DECLARE @AprDate Datetime
DECLARE @MayDate Datetime
DECLARE @JunDate Datetime
DECLARE @JulDate Datetime
DECLARE @AugDate Datetime
DECLARE @SepDate Datetime
DECLARE @OctDate Datetime
DECLARE @NovDate Datetime
DECLARE @DecDate Datetime
DECLARE @Date SMALLDATETIME;
SET @Date = CONVERT(SMALLDATETIME, CONVERT(CHAR(4), @Year), 112);
SET @Year = 2014;
SET @JanDate = CAST(
CAST(@Year+1 AS NVARCHAR(4)) + '02' + '01' + ' 00:05:00'
AS DATETIME)
SET @FebDate = CAST(
CAST(@Year+1 AS NVARCHAR(4)) + '03' + '01' + ' 00:05:00'
AS DATETIME)
SET @MarDate = CAST(
CAST(@Year+1 AS NVARCHAR(4)) + '04' + '01' + ' 00:05:00'
AS DATETIME)
SET @AprDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '05' + '01' + ' 00:05:00'
AS DATETIME)
SET @MayDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '06' + '01' + ' 00:05:00'
AS DATETIME)
SET @JunDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '07' + '01' + ' 00:05:00'
AS DATETIME)
SET @JulDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '08' + '01' + ' 00:05:00'
AS DATETIME)
SET @AugDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '09' + '01' + ' 00:05:00'
AS DATETIME)
SET @SepDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '10' + '01' + ' 00:05:00'
AS DATETIME)
SET @OctDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '11' + '01' + ' 00:05:00'
AS DATETIME)
SET @NovDate = CAST(
CAST(@Year AS NVARCHAR(4)) + '12' + '01' + ' 00:05:00'
AS DATETIME)
SET @DecDate = CAST(
CAST(@Year+1 AS NVARCHAR(4)) + '01' + '01' + ' 00:05:00'
AS DATETIME)
PRINT 'Opening cursor.'
SET @app_cur = CURSOR FORWARD_ONLY FOR
SELECT [Tagname2]
FROM PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
-- Open cursor 1 for iteration.
OPEN @app_cur
-- Fetch the first record.
FETCH NEXT FROM @app_cur INTO @Current_Tagname
-- Iterate each record.
WHILE (@@FETCH_STATUS = 0)
BEGIN
--clear PV value
set @Current_PV_Value = null
--January Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @JanDate
AND [DateTime] <= dateadd(minute,5,@JanDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Jan] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Jan] = 0
WHERE CURRENT OF @app_cur
END
--February Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @FebDate
AND [DateTime] <= dateadd(minute,5,@FebDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Feb] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Feb] = 0
WHERE CURRENT OF @app_cur
END
Print 'tagname: '[email protected]_Tagname
Print 'value: '+ cast(@Current_PV_Value as varchar(50))
--March Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @MarDate
AND [DateTime] <= dateadd(minute,5,@MarDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Mar] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Mar] = 0
WHERE CURRENT OF @app_cur
END
--April Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @AprDate
AND [DateTime] <= dateadd(minute,5,@AprDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Apr] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Apr] = 0
WHERE CURRENT OF @app_cur
END
--May Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @MayDate
AND [DateTime] <= dateadd(minute,5,@MayDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [May] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [May] = 0
WHERE CURRENT OF @app_cur
END
--June Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @JunDate
AND [DateTime] <= dateadd(minute,5,@JunDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Jun] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Jun] = 0
WHERE CURRENT OF @app_cur
END
--July Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @JulDate
AND [DateTime] <= dateadd(minute,5,@JulDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Jul] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Jul] = 0
WHERE CURRENT OF @app_cur
END
--August Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @AugDate
AND [DateTime] <= dateadd(minute,5,@AugDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Aug] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Aug] = 0
WHERE CURRENT OF @app_cur
END
--September Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @SepDate
AND [DateTime] <= dateadd(minute,5,@SepDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Sep] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Sep] = 0
WHERE CURRENT OF @app_cur
END
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Sep] = 0
WHERE CURRENT OF @app_cur
END
--October Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @OctDate
AND [DateTime] <= dateadd(minute,5,@OctDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Oct] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Oct] = 0
WHERE CURRENT OF @app_cur
END
--November Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @NovDate
AND [DateTime] <= dateadd(minute,5,@NovDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Nov] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Nov] = 0
WHERE CURRENT OF @app_cur
END
--December Data
SELECT TOP 1 @Current_PV_Value = [Value]
FROM [Runtime].[dbo].[History]
WHERE [TagName] = @Current_Tagname
AND wwRetrievalMode = 'Delta'
AND wwVersion = 'Latest'
AND [DateTime] >= @DecDate
AND [DateTime] <= dateadd(minute,5,@DecDate)
ORDER BY [DateTime] DESC
if @Current_PV_Value is not null
Begin
-- Update the return set with our phase number value.
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Dec] = @Current_PV_Value
WHERE CURRENT OF @app_cur
end
if @Current_PV_Value is null
BEGIN
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [Dec] = 0
WHERE CURRENT OF @app_cur
END
FETCH NEXT FROM @app_cur INTO @Current_Tagname
END--End of cursor 1 logic
-- Close and dispose of the cursor.
CLOSE @app_cur
DEALLOCATE @app_cur
--Year to Date Totals
UPDATE PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET [YTD] = (ISNULL([Jan],0) + ISNULL([Feb],0)+ ISNULL([Mar],0) + ISNULL([Apr],0) + ISNULL([May],0) + ISNULL([Jun],0) + ISNULL([Jul],0) + ISNULL([Aug],0) + ISNULL([Sep],0) + ISNULL([Oct],0) + ISNULL([Nov],0) + ISNULL([Dec],0))
Update PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET Apr = round(apr,1),
May = round(may,1),
Jun = round(jun,1),
Jul = round(jul,1),
Aug = round(aug,1),
Sep = round(sep,1),
Oct = round(oct,1),
Nov = round(nov,1),
[Dec] = round(dec,1),
Jan = round(jan,1),
Feb = round(feb,1),
Mar = round(mar,1),
YTD = round(ytd,1)
Update PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
SET YTD = str(cast(YTD as real))
Select str(cast(YTD as real)) from PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
select * from PARCS_DB.dbo.tbl_Utilities_PARCS_Totals
這似乎有與選擇語句正確的輸出。但是,當我做更新語句,然後從表中選擇*它仍然顯示原始? – user3532047 2014-10-01 13:51:19
試試上面的查詢@ user3532047 – Undo 2014-10-01 13:54:03
試過了新的。在整個表格上進行選擇*時仍顯示原始值。 – user3532047 2014-10-01 13:58:31