【问题标题】:SQL Query with Join and Count带有连接和计数的 SQL 查询
【发布时间】:2021-12-28 09:56:14
【问题描述】:

我对复杂查询没有太多经验,而且这个查询对我来说看起来很复杂。希望可以有人帮帮我。 我有两张桌子:

  1. [project] 包含以下列:

    [Id]
    [Name]
    [Street]
    [City]
    [State]
    [Country]
    [Postcode]
    [CreateDate]
    
  2. [stock] 包含以下列:

    [Id]
    [ProjectID]
    [Price]
    [Status]
    

库存状态可以是“Available”“Reserved”“Sold”

我需要选择:

在“01-01-2016”之后创建并位于特定区域(邮政编码列表)的所有项目,并显示这些项目在每个状态下的库存数量。

所以结果应该是这样的:

Project Name Street City State Country Created Date Available Reserved Sold
Project Name 1 Street1 City1 State1 Country1 02-03-2021 153 25 76
Project Name 2 Street2 City2 State2 Country1 05-03-2021 5 67 345

我对 WHERE 部分没有任何问题,但不知道在这种情况下如何使用 COUNT。

【问题讨论】:

  • JOIN、GROUP BY、用例表达式进行条件聚合。

标签: sql join count


【解决方案1】:

有几种方法可以解决这个问题。它可以通过大小写、子查询来完成。但是,利用枢轴函数可以用更少的代码完成。

SELECT * FROM (
SELECT name,street,city,state,country,postcode,createDate,status
FROM Project p JOIN Stock s ON p.Id=s.ProjectId
WHERE createDate >= '01-01-2016'
)
pivot 
(
COUNT(status) FOR status IN  ('Available','Reserved','Sold')
);

【讨论】:

  • 嗨,rathourdevesh。非常感谢你的帮助。此查询返回语法错误,但我设法使用 PIVOT 获取数据。以前不知道。再次感谢!
猜你喜欢
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
相关资源
最近更新 更多