查询时间段在2023-04-02到2023-04-16 且goodsid等于 1060194 的A表和B表中的差异数据 查询A表的shopid,saledate,xssl 查询B表的mkt,hsday,xssl 然后将A表和B表union连接,然后查询出哪个门店哪一天xssl分别差了多少
时间: 2023-12-10 22:37:34 浏览: 30
根据您的要求,可以使用以下SQL语句查询:
```
SELECT shopid, saledate, SUM(xssl) AS diff
FROM (
SELECT shopid, saledate, xssl FROM A
WHERE saledate BETWEEN '2023-04-02' AND '2023-04-16'
AND goodsid = '1060194'
UNION ALL
SELECT mkt AS shopid, hsday AS saledate, -xssl FROM B
WHERE hsday BETWEEN '2023-04-02' AND '2023-04-16'
AND goodsid = '1060194'
) AS C
GROUP BY shopid, saledate
HAVING SUM(xssl) <> 0
ORDER BY shopid, saledate
```
说明:
1. 首先使用UNION ALL将A表和B表连接起来,并且将B表中的xssl取相反数。
2. 然后对连接后的结果按照shopid和saledate进行分组,计算差异值并筛选出差异值不为0的记录。
3. 最后按照shopid和saledate进行排序输出。
需要注意的是,以上SQL语句仅供参考,具体实现可能需要根据数据库的具体情况进行调整。
相关问题
现A表有字段shopid,saledate,xssl B表有字段mkt,hsday,xssl 取A表goodsid 等于1060194 和saledate在 20230402- 20230416之间的数据 取B表gdid 等于 1060194和hsday 在2023-04-02 到 2023-04-16之间的数据 且A B 表分别按照shopid saledate,mkt hsday 分组 以A表为主表对比A表和B表之间的差异数据(shopid,saledate,sum(xssl))
可以使用以下 SQL 语句实现:
```sql
SELECT A.shopid, A.saledate, A.mkt, SUM(A.xssl) AS a_xssl, SUM(B.xssl) AS b_xssl
FROM A
LEFT JOIN B ON A.shopid = B.shopid AND A.saledate = B.hsday AND A.goodsid = B.gdid
WHERE A.goodsid = 1060194 AND A.saledate BETWEEN '20230402' AND '20230416' AND B.gdid = 1060194 AND B.hsday BETWEEN '2023-04-02' AND '2023-04-16'
GROUP BY A.shopid, A.saledate, A.mkt
HAVING SUM(A.xssl) <> SUM(B.xssl)
```
解释一下这个 SQL 语句:
首先使用 `LEFT JOIN` 将 A 表和 B 表连接起来,连接条件是 A 表的 `shopid` 和 `saledate` 分别等于 B 表的 `shopid` 和 `hsday`,以及 A 表的 `goodsid` 等于 B 表的 `gdid`。
然后使用 `WHERE` 子句筛选出符合条件的数据,即 A 表的 `goodsid` 等于 1060194,且 `saledate` 在 20230402 到 20230416 之间,B 表的 `gdid` 等于 1060194,且 `hsday` 在 2023-04-02 到 2023-04-16 之间。
接着使用 `GROUP BY` 将结果按照 A 表的 `shopid`、`saledate` 和 B 表的 `mkt`、`hsday` 进行分组。
最后使用 `HAVING` 子句筛选出 A 表和 B 表之间差异数据,即 A 表的 `xssl` 和不等于 B 表的 `xssl` 和。同时,使用 `SUM` 函数对 A 表和 B 表的 `xssl` 进行求和。最终输出 A 表的 `shopid`、`saledate`、B 表的 `mkt`、A 表的 `xssl` 和 B 表的 `xssl`。
情况:有三个字段,companyid,goodsid,year,一个companyid有多个goodsid,帮我写一段SQL,找出companyid中的goodsid在2023年有记录,2022没有记录
SELECT DISTINCT companyid FROM table_name WHERE goodsid IN (SELECT goodsid FROM table_name WHERE year = 2023) AND companyid NOT IN (SELECT companyid FROM table_name WHERE year = 2022)
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)