SELECT * FROM table PIVOT (MAX(TxnDate) FOR TxnTypeName IN ([MoveIn],[MoveStd],[mlxSetCheckCenter]) ) AS T 转成HIVESQL
时间: 2024-11-15 11:21:02 浏览: 3
在Hive SQL中,如果你想将类似SQL查询从MySQL转换,尤其是涉及到`PIVOT`操作,你需要利用`CASE`语句和`GROUP BY`来实现数据重塑。这个查询的大致意思是根据`TxnTypeName`的不同值,对`TxnDate`字段取最大值。Hive SQL的等效语法可能是这样的:
```sql
SELECT
CASE
WHEN TxnTypeName = 'MoveIn' THEN MaxTxnDate
WHEN TxnTypeName = 'MoveStd' THEN MaxTxnDate
WHEN TxnTypeName = 'mlxSetCheckCenter' THEN MaxTxnDate
END AS TransactionType,
[其他需要保留的列]
FROM (
SELECT
TxnTypeName,
MAX(TxnDate) as MaxTxnDate,
-- 其他列...
FROM
table
GROUP BY
TxnTypeName,
-- 如果还有其他分组条件,这里列出它们
) AS subquery
```
在这个查询中,首先对原始表按`TxnTypeName`和可能的其他分组条件进行分组,并计算每个组的最大`TxnDate`。然后外部查询通过`CASE`语句根据`TxnTypeName`选择相应的最大日期。
注意,Hive SQL可能不支持直接的`PIVOT`关键字,所以需要手动编写`CASE`语句。另外,记得检查列名是否适用于你的实际表结构。
阅读全文