我的数据是这样的
SELECT * FROM EMP where EMP_ID=2713729
输出:
EMP_ID CODE AMOUNT
2713729 1A 1.00
2713729 2D 1.50
我的要求:如果有多个代码,则将代码显示为“多个”,但如果有一个代码,则显示该代码本身(例如“1A”)
我希望我的输出如下(如果数据如上)
代码金额倍数2.50
如果我的数据是这样的:
EMP_ID CODE AMOUNT
2713729 1A 1.00
那么我希望我输出如下:
CODE AMOUNT
1A 2.50
我尝试使用下面的SQL,但它抛出错误:
SELECT
CASE
WHEN count(CODE) > 1 THEN 'MULTI'
WHEN count(CODE) = 1 THEN CODE
END as CODE,
SUM(AMT) FROM EMP where EMP_ID=2713729 group by EMP_ID
错误:
Error: DB2 SQL Error: SQLCODE=-122, SQLSTATE=42803, SQLERRMC=null, DRIVER=4.19.26
SQLState: 42803
ErrorCode: -122
Error: DB2 SQL Error: SQLCODE=-514, SQLSTATE=26501, SQLERRMC=SQL_CURLH200C1, DRIVER=4.19.26
SQLState: 26501
ErrorCode: -514
如果我硬'多'和代码,那么我得到的结果。
SELECT
CASE
WHEN count(CODE) > 1 THEN 'MULTI'
WHEN count(CODE) = 1 THEN 'SINGLE'
END as CODE,
SUM(AMT) FROM EMB where EMP_ID=2713729 group by EMP_ID
"但我不想让“单身”变硬“
2条答案
按热度按时间vlju58qv1#
您是否尝试过:
注:如果同一EMP_ID中的其它行具有相同的CODE,则系统会将这些行标记为'MULTI'。如果不需要这样做,请将count(*)更改为count(DISTINCT CODE)。
或以下内容:
jxct1oxe2#
如果你取消注解掉的块,你可以运行这个语句来检查。