SQL server多表查询提数

查看 74|回复 5
作者:fxsmkj   
单表查询
SELECT CardNo,Balance,Stamp
   FROM  dbo.cl_Transactions_2018_05 T
   WHERE not EXISTS
( SELECT CardNo,Balance,Stamp FROM  dbo.cl_Transactions_2018_05 WHERE CardNo = T.CardNo AND Stamp > T.Stamp )
多表查询
SELECT CardNo,Balance,Stamp
   from dbo.cl_Transactions_2022_07,dbo.cl_Transactions_2022_08,dbo.cl_Transactions_2022_09.dbo.cl_Transactions_2022_10,dbo.cl_Transactions_2022_11dbo.cl_Transactions_2022_12,
   dbo.cl_Transactions_2023_01,dbo.cl_Transactions_2023_02,dbo.cl_Transactions_2023_03,dbo.cl_Transactions_2023_04,dbo.cl_Transactions_2023_05,dbo.cl_Transactions_2023_06,dbo.cl_Transactions_2023_07,dbo.cl_Transactions_2023_08,dbo.cl_Transactions_2023_09,dbo.cl_Transactions_2023_10,dbo.cl_Transactions_2023_11,dbo.cl_Transactions_2023_12,
   dbo.cl_Transactions_2024_01,dbo.cl_Transactions_2024_02,dbo.cl_Transactions_2024_03,dbo.cl_Transactions_2024_04,dbo.cl_Transactions_2024_05 T
   where not exists
(SELECT CardNo,Balance,Stamp FROM  dbo.cl_Transactions_2022_07,dbo.cl_Transactions_2022_08,dbo.cl_Transactions_2022_09.dbo.cl_Transactions_2022_10,dbo.cl_Transactions_2022_11dbo.cl_Transactions_2022_12,
   dbo.cl_Transactions_2023_01,dbo.cl_Transactions_2023_02,dbo.cl_Transactions_2023_03,dbo.cl_Transactions_2023_04,dbo.cl_Transactions_2023_05,dbo.cl_Transactions_2023_06,dbo.cl_Transactions_2023_07,dbo.cl_Transactions_2023_08,dbo.cl_Transactions_2023_09,dbo.cl_Transactions_2023_10,dbo.cl_Transactions_2023_11,dbo.cl_Transactions_2023_12,
   dbo.cl_Transactions_2024_01,dbo.cl_Transactions_2024_02,dbo.cl_Transactions_2024_03,dbo.cl_Transactions_2024_04,dbo.cl_Transactions_2024_05 WHERE CardNo = T.CardNo AND Stamp > T.Stamp )
单表查询可行,多表查询不会写,求助完善下
CardNo取多表唯一值,Stamp取多表最新时间

时间, gt

清风明月少年郎   

多表查询中这些列出来的所有表字段都是一样的吗
fxsmkj
OP
  


清风明月少年郎 发表于 2024-5-8 17:26
多表查询中这些列出来的所有表字段都是一样的吗

是的。。。。。。
清风明月少年郎   


fxsmkj 发表于 2024-5-8 17:31
是的。。。。。。

用union将多个表先连接起来,再使用连接后的总表查询
select 字段1,字段2 from 表1 union select 字段1,字段2 from表2
fxsmkj
OP
  


清风明月少年郎 发表于 2024-5-8 17:33
用union将多个表先连接起来,再使用连接后的总表查询
select 字段1,字段2 from 表1 union select 字段1, ...

大佬有没有示例
时光稀释   

WITH BASE_DATA_TEMP AS (
                SELECT CardNo,Balance,Stamp FROM dbo.cl_Transactions_2022_07 T
                UNION ALL
                SELECT CardNo,Balance,Stamp FROM dbo.cl_Transactions_2022_08 T
                UNION ALL
                SELECT CardNo,Balance,Stamp FROM dbo.cl_Transactions_2022_08 T
                .....
)SELECT
        A.CardNo,
        A.Balance,
        MAX(Stamp) AS Stamp
FROM BASE_DATA_TEMP A
GROUP BY A.CardNo,A.Balance
如果不支持WITH,放到FROM后面 替换BASE_DATA_TEMP
您需要登录后才可以回帖 登录 | 立即注册

返回顶部