我有 json 字串
DECLARE @json nvarchar(max)
SET @json = '{"value": [
{
"AEDAT": "20211119",
"ERDAT": "20211119"
},
{
"AEDAT": "20211119",
"ERDAT": "20211112"
},
{
"AEDAT": "20211123",
"ERDAT": "20211123"
},
{
"AEDAT": "00000000",
"ERDAT": "20211119"
},
{
"AEDAT": "00000000",
"ERDAT": "20211123"
}]}'
然后當我使用OPENJSONthen (只有第一兩行)時:
key value type
0 {"AEDAT": "20211119", "ERDAT": "20211119"} 5
1 { "AEDAT": "20211119", "ERDAT": "20211112"} 5
我想要MAX值列的值。所以在上面的例子中,結果應該是 20211119。
基于此處1并按照某人的建議,我收到的錯誤為
將 nvarchar 值 '{"AEDAT": "20211119", "ERDAT": "20211119"}' 轉換為資料型別 int 時轉換失敗。
有關如何實作相同目標的任何線索?我是 SQL Server 的新手,因此尋求幫助。
uj5u.com熱心網友回復:
請嘗試以下解決方案。
它計算最大值是兩個步驟:
- 對于每一行。
- 整個資料集所有行的全域單個最大值。
查詢陳述句
DECLARE @j NVARCHAR(MAX) =
N'{"value": [
{
"AEDAT": "20211119",
"ERDAT": "20211119"
},
{
"AEDAT": "20211119",
"ERDAT": "20211112"
},
{
"AEDAT": "20211123",
"ERDAT": "20211123"
},
{
"AEDAT": "00000000",
"ERDAT": "20211119"
},
{
"AEDAT": "00000000",
"ERDAT": "20211123"
}]}';
WITH rs AS
(
SELECT *
, (SELECT MAX(val) FROM (VALUES (AEDAT), (ERDAT)) AS v(val)) AS MaxValue
FROM OPENJSON(@j,'$.value') WITH (
AEDAT int '$.AEDAT',
ERDAT int '$.ERDAT'
)
)
SELECT MAX(rs.MaxValue) AS result
FROM rs;
輸出
----------
| result |
----------
| 20211123 |
----------
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/365089.html
標籤:json sql-server 查询语句
上一篇:回傳行,當兩個條件為真時
