首页 > 解决方案 > SQL如何在两个不同的列上带来两个不同条件的两个结果

问题描述

我有这个 SQL 查询

SELECT N2 as DOORS, N2 as WINDOWS
   FROM DATABASE.dbo.DISTINTAB
        WHERE numero=45
        AND CODEITEM='D' OR CODEITEM='W'

现在它给我带来了 2 列(DOORS,WINDOWS),结果相同。

我真正想要的是只在 DOORS 列上引入代码为“D”的项目,在 WINDOWS 列上只引入代码为“W”的项目

我怎样才能做到这一点?

标签: sqlsql-server

解决方案


你似乎想要聚合:

SELECT numero, 
       MAX(CASE WHEN CODEITEM = 'D' THEN N2 END) AS DOORS,
       MAX(CASE WHEN CODEITEM = 'W' THEN N2 END) AS WINDOWS
FROM DATABASE.dbo.DISTINTAB
WHERE numero = 45 AND CODEITEM IN ('D', 'W')
GROUP BY numero; 

推荐阅读