我有以下查询:
SELECT CONCAT(transactionID, '|', startStatus, '|', endStatus, '|', transactionType, '|', date) FROM db_transactions
WHERE orgId = 2
ORDER BY date DESC
OFFSET 0 ROWS
FETCH NEXT 13 ROWS ONLY
我不能检索多于1列,因此我正在使用CONCAT在一个结果中获得多列。 但是我还需要获取项目总数。
所以基本上我想返回COUNT(transactionID)作为CONCAT字符串的一部分,我尝试添加:
SELECT CONCAT(transactionID, '|', startStatus, '|', endStatus, '|', transactionType, '|', date, '|', COUNT(transactionID))
但这没用。
这有可能吗?
答案 0 :(得分:0)
您可以添加转换为COUNT()
的窗口VARCHAR
:
SELECT
CONCAT(
transactionID,
'|',
startStatus,
'|',
endStatus,
'|',
transactionType,
'|',
date,
'|',
CONVERT(VARCHAR(10), COUNT(1) OVER(PARTITION BY transactionID)))
FROM
db_transactions
WHERE
orgId = 2
ORDER BY
date DESC
OFFSET
0 ROWS
FETCH NEXT
13 ROWS ONLY
答案 1 :(得分:0)
如果您想为每个TransactionID
加上这些ID的总数,则可以尝试分析函数 COUNT() OVER (PARTITION BY)
:
SELECT CONCAT(transactionID, '|',
startStatus, '|',
endStatus, '|',
transactionType, '|',
date, '|',
COUNT(1) OVER (PARTITION BY transactionID))
...