我正在使用 postgres,但我也了解 T-SQL,所以任何人能给我的任何答案我都将不胜感激并能够进行转换。我正在尝试对我的汽车销售公司进行查询。他们在美国各地销售汽车,主要在俄勒冈州和西澳州。我需要提供一份报告,允许我返回 OR 的新销售额和 Wa 的新销售额,然后我遇到的问题是非 OR 或 Wa 的所有其他州的销售额。所以现在我正在运行一个带有 group by 的联合,其中一个查询用于 WA,另一个语句用于 OR。我希望结果看起来非常简单,只有 3 行。 1 OR 1 WA 和第三行所有其他状态的组合。我不知道如何将不等于 OR 或 WA 组合成一个值。这可能吗?
感谢您花时间查看此内容
我的查询还将包括二手销售汽车,但一旦我弄清楚如何解决这个问题,我就可以整合它,这就是查询有多个联合的原因
这是我现在的查询:
SELECT buyerstate AS "State",
Count(buyerstate) AS "Acura",
saletype AS "N/U"
FROM lydeal
WHERE stocklocationid = '8'
AND buyerstate = 'OR'
AND saledate > '8/01/12'
AND saletype = 'N'
GROUP BY buyerstate,
stocklocationid,
saletype
UNION
SELECT buyerstate AS "State",
Count(buyerstate) AS "Acura",
saletype AS "N/U"
FROM lydeal
WHERE stocklocationid = '8'
AND buyerstate = 'OR'
AND saledate > '8/01/12'
AND saletype = 'U'
GROUP BY buyerstate,
stocklocationid,
saletype
UNION
SELECT buyerstate AS "State",
Count(buyerstate) AS "Acura",
saletype AS "N/U"
FROM lydeal
WHERE stocklocationid = '8'
AND buyerstate = 'WA'
AND saledate > '8/01/12'
AND saletype = 'N'
GROUP BY buyerstate,
stocklocationid,
saletype
UNION
SELECT buyerstate AS "State",
Count(buyerstate) AS "Acura",
saletype AS "N/U"
FROM lydeal
WHERE stocklocationid = '8'
AND buyerstate = 'WA'
AND saledate > '8/01/12'
AND saletype = 'U'
GROUP BY buyerstate,
stocklocationid,
saletype
最佳答案
试试这个
SELECT CASE WHEN buyerstate IN ('OR','Wa') THEN buyerstate ELSE 'OTHER' END AS "State",
Count(buyerstate) AS "Acura",
saletype AS "N/U"
FROM lydeal
WHERE stocklocationid = '8'
AND saledate > '8/01/12'
AND saletype = 'N'
GROUP BY CASE WHEN buyerstate IN ('OR','Wa') THEN buyerstate ELSE 'OTHER' END,
stocklocationid,
saletype
关于SQL 分组结果不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164336/