繁体   English   中英

合并SQL Union查询的行

[英]Combine rows of SQL Union query

我正在尝试执行一个SQL查询,该查询生成一个表,该表具有引用相同数据但使用不同条件的两列。 我的结果查询需要包含以下列:

查询结果:

  • 总量
  • 可用数量

其中总量为某一个项目的总数量和可用相同项目的一个子集,但只有那些被标记为“可用”。

我尝试使用以下形式的UNION:

SELECT
   '0' as Quantity,
   COUNT (item.pkid) as Available
FROM itemInstance, itemType
WHERE
   itemInstance.availability = 'AVAILABLE'
   AND itemInstance.type = itemType.primary_key
UNION
SELECT
   COUNT (DISTINCT item.pkid) as Quantity,
   '0' as Available
FROM itemInstance, itemType
WHERE itemInstance.type = itemType.primary_key

当然哪个会产生类似的结果:

  Quantity  Available
1    0          2
2    4          0
3    0          3
4    7          0

当我真正想要的时候:

  Quantity  Available
1    4          2
2    7          3

任何帮助,将不胜感激。 谢谢!

我认为我不了解您查询的所有方面,但是它基本上应该像这样工作:

SELECT
   COUNT(*) as Quantity,
   SUM(CASE WHEN itemInstance.availability = 'AVAILABLE'
            THEN 1
            ELSE 0
            END) As Available
FROM itemInstance, itemType
WHERE itemInstance.type = itemType.primary_key

CASE对于每个matchin行为1对于notmatchin行为0 ,因此这些值的总和是可用项的计数。

顺便说一句:您可能希望切换到显式联接表示法,以提高可读性(尤其是对于更复杂的查询):

...
FROM itemInstance
JOIN itemType ON ( itemInstance.type = itemType.primary_key )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM