解释场景的:
我有一个真实的国家系统的单位租用建立在甲骨文数据库。在我的系统中,我有一组建筑物的列表,每一栋建筑都有自己的单元。
每栋楼都有多个单元,它们的价格因其位置和房间数目、厨房、浴室、阳台和停车场的数目而不同。等
例如,:
有些单位是租的,有些单位是没有租的。
我期待得到的单位清单,根据其规格和价格清单。
我编写了一个查询来给我这样的列表:
SELECT GR.G_NO, MIN(U.ANNUAL_RENT),MIN(U.U_NO), MIN(U.U_CODE), MIN(UT.UNIT_TYPE), U.VARAND_NAME, U.UNIT_STATE, COUNT(U.UNIT_STATE) , COUNT(UT.UNIT_TYPE), min(U.COUNT_ROOM), min(U.PATH_NO), min(U.GALARY_NO),
FROM UNITS U
JOIN UNIT_TYPE UT
ON UT.UNIT_NO = U.UNIT_NO
JOIN GROUPS GR
ON GR.G_NO = U.G_NO
JOIN BUILDS B
ON B.B_NO = U.B_NO
WHERE
GR.G_NO = B.G_NO
GROUP BY GR.G_NO, B.B_NAME, U.VARAND_NAME, U.UNIT_STATE, U.ANNUAL_RENT
ORDER BY GR.G_NO, B.B_NAME, MIN(U.ANNUAL_RENT),MIN(U.U_NO)
FETCH FIRST 5 ROWS ONLY其中的输出如下:

如果你看记录3和4,它们有相同的规格和相同的价格,其中唯一不同的是UNIT_STATE和COUNT(U.UNIT_STATE) (y)租用(1单元)或(N)未租(2套)。
我正在寻找的是通过计数(U.UNIT_STATE)在这样的独立列上获得单位计数。

我得到的地方:
因此,例如,记录号3,总单位为3,其中1个单元被租用,2个单元没有出租。
发布于 2019-06-30 09:25:19
似乎您需要这样的东西(由于缺乏测试数据而没有测试):
SELECT GR.G_NO,
MIN(U.ANNUAL_RENT) ,
MIN(U.U_NO),
MIN(U.U_CODE),
MIN(UT.UNIT_TYPE),
U.VARAND_NAME,
COUNT(U.UNIT_STATE) as total_unit_by_same_type,
COUNT( CASE WHEN UNIT_STATE = 'Y' THEN 1 END ) as "COUNT(U.UNIT_STATE)=Y",
COUNT( CASE WHEN UNIT_STATE = 'N' THEN 1 END ) as "COUNT(U.UNIT_STATE)=N",
COUNT(UT.UNIT_TYPE),
min(U.COUNT_ROOM),
min(U.PATH_NO),
min(U.GALARY_NO),
U.ANNUAL_RENT
FROM ....
...... rest of your query goes here
.....
.....
GROUP BY GR.G_NO,
B.B_NAME,
U.VARAND_NAME,
U.ANNUAL_RENT
ORDER BY GR.G_NO, B.B_NAME, MIN(U.ANNUAL_RENT),MIN(U.U_NO)https://stackoverflow.com/questions/56823191
复制相似问题