美好的一天!我想要做的是使用临时表更新FinalTable
,其中临时表的DateStamp
列大于DateStamp
FinalTable
列
到目前为止,我已经想到了这样的事情:
INSERT INTO [dbo].[FinalTable]([DateStamp], [TIME], [DATE], [USER_LOGIN],[USER_NAME], [MODEL_NAME], [SCORECARD_IDENTIFIER], [SCORECARD_NAME],[ELEMENT_IDENTIFIER], [ELEMENT_NAME], [SERIES_IDENTIFIER], [SERIES_NAME],[PERIOD_NAME], [ACTION_TYPE], [ACTION], [PREVIOUS_VALUE], [VALUE], [UNIT])
SELECT
CONVERT(VARCHAR, CONCAT([DATE], ' ' ,[TIME]), 121) AS [DateStamp],
[TIME], [DATE], [USER_LOGIN], [USER_NAME],
[MODEL_NAME], [SCORECARD_IDENTIFIER], [SCORECARD_NAME],
[ELEMENT_IDENTIFIER], [ELEMENT_NAME],
[SERIES_IDENTIFIER], [SERIES_NAME],
[PERIOD_NAME], [ACTION_TYPE], [ACTION],
[PREVIOUS_VALUE], [VALUE], [UNIT]
FROM
#TEMP
WHERE
(SELECT CONVERT(VARCHAR, CONCAT([DATE], ' ' ,[TIME]), 121) AS [DateStamp] FROM #TEMP) > (SELECT MAX([DateStamp]) FROM [Test].[dbo].[FinalTable])
DROP TABLE #TEMP
不幸的是它给我一个这样的错误:
Msg 512,Level 16,State 1,Line 17
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
我正在select中创建temp中的[DateStamp]
列,因为我正在读取文本文件。所以最初我想查看两个表以及[DateStamp]
中#Temp
列值更高的位置,然后[FinalTable]
中的那个只是将新行添加/插入[FinalTable]
如果有人提出别的建议请告诉我。我仍然是SQL的新手,但我正在尽我所能。
答案 0 :(得分:1)
试试这个
NewtonSoft.JsonConvert.DeserializeObject()
此外,我不建议在比较日期时使用varchar
答案 1 :(得分:0)
问题在这里:
where (SELECT convert(varchar,CONCAT([DATE], ' ' ,[TIME]), 121) AS [DateStamp] FROM #TEMP)
#TEMP
没有条件