SQL Conditional列并合并两行



我发现了许多关于如何向列添加条件或如何与"max"合并的示例,但我不清楚如何在这种特殊情况下做到这一点:

SQL查询:

SELECT IDLOCK, DT, LOCKTYPE, PRODUCTATTRIBUTE, VALUE
FROM LOCKREGISTER LR
LEFT JOIN LOCKTYPES T
ON LR.IDLOCKTYPE = T.IDLOCKTYPE
LEFT JOIN PRODUCTATTRIBUTES PA
ON LR.IDPRODUCT = PA.IDPRODUCT AND (PRODUCTATTRIBUTE = 'CodeSet' OR PRODUCTATTRIBUTE = 'KeySet')
ORDER BY IDLOCK;

您可以执行条件标记:

SELECT IDLOCK, DT, LOCKTYPE, 
MAX(CASE WHEN PRODUCTATTRIBUTE = 'CodigoConjunto' THEN  PRODUCTATTRIBUTE END),
MAX(CASE WHEN PRODUCTATTRIBUTE = 'CodigoConjunto' THEN  VALUE END),
MAX(CASE WHEN PRODUCTATTRIBUTE = 'ClaveConjunto' THEN  PRODUCTATTRIBUTE END),
MAX(CASE WHEN PRODUCTATTRIBUTE = 'ClaveConjunto' THEN  VALUE END)
FROM LOCKREGISTER LR LEFT JOIN 
LOCKTYPES T
ON LR.IDLOCKTYPE = T.IDLOCKTYPE LEFT JOIN 
PRODUCTATTRIBUTES PA
ON LR.IDPRODUCT = PA.IDPRODUCT AND 
PRODUCTATTRIBUTE IN ('CodigoConjunto','ClaveConjunto')
GROUP BY IDLOCK, DT, LOCKTYPE;

最新更新