子查询 - 定义 select 列表。子查询returns 每个结果行取相同的值
Subquery - define select list. The subquery returns the same value for each result line
你知道我做错了什么吗?
我的子查询为所有行返回相同的值。
SELECT distinct
ca.descripcion AS 'Storage_Condition',
--Warehouses.[Nombre] as [Warehouse],
COUNT(pos.rack) as [Max Capacity],
(select distinct
count(pos.rack) + ''
FROM Depositos de
INNER JOIN Posiciones pos ON de.deposito_id = pos.deposito_id
INNER JOIN Condiciones_Almacenamiento ca ON de.condicion_almac_id = ca.condicion_id
INNER JOIN Estados_Posicion ep ON pos.estado_posicion_id = ep.estado_posicion_id
INNER JOIN Tipo_posiciones tipopos ON tipopos.tipo_posicion_id = pos.tipo_posicion_id
INNER JOIN Warehouses ON Warehouses.[warehouse_id] = de.[warehouse_id]
WHERE ((CASE WHEN 1 = 2 THEN ep.descripcion_es ELSE ep.descripcion END) = 'Occupied') AND tipopos.descripcion = 'Shelf' AND Warehouses.nombre like ('%Frankfurt%')) as [Used Capacity]
FROM Depositos de
INNER JOIN Posiciones pos ON de.deposito_id = pos.deposito_id
-- AND de.warehouse_id = @warehouse_id
INNER JOIN Condiciones_Almacenamiento ca ON de.condicion_almac_id = ca.condicion_id
INNER JOIN Tipos_Subproyecto ts ON de.tipo_subproyecto_id = ts.tipo_subproyecto_id
INNER JOIN Estados_Posicion ep ON pos.estado_posicion_id = ep.estado_posicion_id
INNER JOIN Tipo_posiciones tipopos ON tipopos.tipo_posicion_id = pos.tipo_posicion_id
INNER JOIN Warehouses ON Warehouses.[warehouse_id] = de.[warehouse_id]
where
--ca.descripcion = '15-25.C'
tipopos.descripcion = 'Shelf'
and Warehouses.nombre like ('%Frankfurt%')
--and (CASE WHEN 1 = 2 THEN ep.descripcion_es ELSE ep.descripcion END) = 'Occupied'
Group by
--Warehouses.[Nombre]
ca.descripcion
Order by COUNT(pos.rack) desc
非常感谢您的任何建议! :)
我想你只是想要条件聚合:
SELECT ca.descripcion AS Storage_Condition,
count(pos.rack) as [Max Capacity],
sum(case when ep.descripcion = 'Occupied' then 1 else 0 end) as used_capacity
FROM Depositos de JOIN
Posiciones pos
ON de.deposito_id = pos.deposito_id JOIN
Condiciones_Almacenamiento ca
ON de.condicion_almac_id = ca.condicion_id JOIN
Tipos_Subproyecto ts
ON de.tipo_subproyecto_id = ts.tipo_subproyecto_id JOIN
Estados_Posicion ep
ON pos.estado_posicion_id = ep.estado_posicion_id JOIN
Tipo_posiciones tipopos
ON tipopos.tipo_posicion_id = pos.tipo_posicion_id JOIN
Warehouses
ON Warehouses.[warehouse_id] = de.[warehouse_id]
WHERE tipopos.descripcion = 'Shelf' and
Warehouses.nombre like '%Frankfurt%'
GROUP BY ca.descripcion
ORDER BY COUNT(pos.rack) desc;
你知道我做错了什么吗? 我的子查询为所有行返回相同的值。
SELECT distinct
ca.descripcion AS 'Storage_Condition',
--Warehouses.[Nombre] as [Warehouse],
COUNT(pos.rack) as [Max Capacity],
(select distinct
count(pos.rack) + ''
FROM Depositos de
INNER JOIN Posiciones pos ON de.deposito_id = pos.deposito_id
INNER JOIN Condiciones_Almacenamiento ca ON de.condicion_almac_id = ca.condicion_id
INNER JOIN Estados_Posicion ep ON pos.estado_posicion_id = ep.estado_posicion_id
INNER JOIN Tipo_posiciones tipopos ON tipopos.tipo_posicion_id = pos.tipo_posicion_id
INNER JOIN Warehouses ON Warehouses.[warehouse_id] = de.[warehouse_id]
WHERE ((CASE WHEN 1 = 2 THEN ep.descripcion_es ELSE ep.descripcion END) = 'Occupied') AND tipopos.descripcion = 'Shelf' AND Warehouses.nombre like ('%Frankfurt%')) as [Used Capacity]
FROM Depositos de
INNER JOIN Posiciones pos ON de.deposito_id = pos.deposito_id
-- AND de.warehouse_id = @warehouse_id
INNER JOIN Condiciones_Almacenamiento ca ON de.condicion_almac_id = ca.condicion_id
INNER JOIN Tipos_Subproyecto ts ON de.tipo_subproyecto_id = ts.tipo_subproyecto_id
INNER JOIN Estados_Posicion ep ON pos.estado_posicion_id = ep.estado_posicion_id
INNER JOIN Tipo_posiciones tipopos ON tipopos.tipo_posicion_id = pos.tipo_posicion_id
INNER JOIN Warehouses ON Warehouses.[warehouse_id] = de.[warehouse_id]
where
--ca.descripcion = '15-25.C'
tipopos.descripcion = 'Shelf'
and Warehouses.nombre like ('%Frankfurt%')
--and (CASE WHEN 1 = 2 THEN ep.descripcion_es ELSE ep.descripcion END) = 'Occupied'
Group by
--Warehouses.[Nombre]
ca.descripcion
Order by COUNT(pos.rack) desc
非常感谢您的任何建议! :)
我想你只是想要条件聚合:
SELECT ca.descripcion AS Storage_Condition,
count(pos.rack) as [Max Capacity],
sum(case when ep.descripcion = 'Occupied' then 1 else 0 end) as used_capacity
FROM Depositos de JOIN
Posiciones pos
ON de.deposito_id = pos.deposito_id JOIN
Condiciones_Almacenamiento ca
ON de.condicion_almac_id = ca.condicion_id JOIN
Tipos_Subproyecto ts
ON de.tipo_subproyecto_id = ts.tipo_subproyecto_id JOIN
Estados_Posicion ep
ON pos.estado_posicion_id = ep.estado_posicion_id JOIN
Tipo_posiciones tipopos
ON tipopos.tipo_posicion_id = pos.tipo_posicion_id JOIN
Warehouses
ON Warehouses.[warehouse_id] = de.[warehouse_id]
WHERE tipopos.descripcion = 'Shelf' and
Warehouses.nombre like '%Frankfurt%'
GROUP BY ca.descripcion
ORDER BY COUNT(pos.rack) desc;