You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求实现T-SQL多库多表特定条件的合同查询语句

我帮你梳理了符合需求的T-SQL查询方案,分单表和多表/多数据库两种场景来实现,逻辑和你提到的C#判断逻辑一致,但直接在数据库层完成判断更高效:

单表场景查询语句

假设你的合同数据存储在单个表中,下面的查询可以直接满足需求:

DECLARE @zavodId INT = 5; -- 注意:如果UstrojstvenaJedinicaId是字符串类型,请改成VARCHAR对应长度

SELECT *
FROM YourContractTable
WHERE IsDeleted = 0
AND (
    -- 第一种情况:匹配传入的车间ID参数
    UstrojstvenaJedinicaId = @zavodId
    OR
    -- 第二种情况:系统里仅存在唯一的设备单元ID,且该ID为'HCPHS'
    EXISTS (
        SELECT 1
        FROM (
            -- 先提取所有未删除合同的唯一设备单元ID
            SELECT DISTINCT UstrojstvenaJedinicaId
            FROM YourContractTable
            WHERE IsDeleted = 0
        ) AS DistinctUnits
        -- 判断唯一ID的数量为1,且值是'HCPHS'
        HAVING COUNT(*) = 1 AND MAX(UstrojstvenaJedinicaId) = 'HCPHS'
    )
);

逻辑说明

  • 当系统中存在多个不同的UstrojstvenaJedinicaId时,只会返回IsDeleted=0且UstrojstvenaJedinicaId等于@zavodId的合同;
  • 当系统里所有未删除合同的UstrojstvenaJedinicaId只有一个且是'HCPHS'时,会返回所有未删除的合同。

多数据库/多表场景查询语句

如果合同数据分散在多个数据库或多张表中,可以先用CTE把所有数据源整合起来,再应用相同的条件判断:

DECLARE @zavodId INT = 5; -- 注意:根据UstrojstvenaJedinicaId的实际类型调整参数类型

WITH AllContracts AS (
    -- 整合多个数据源的合同数据,确保所有子查询的列数量、类型完全一致
    SELECT UstrojstvenaJedinicaId, IsDeleted, ContractId, ContractName /* 其他需要的业务列 */
    FROM DB1.dbo.ContractTable
    UNION ALL
    SELECT UstrojstvenaJedinicaId, IsDeleted, ContractId, ContractName /* 其他需要的业务列 */
    FROM DB2.dbo.ContractTable
    -- 继续添加更多数据库/表...
)
SELECT *
FROM AllContracts
WHERE IsDeleted = 0
AND (
    UstrojstvenaJedinicaId = @zavodId
    OR
    EXISTS (
        SELECT 1
        FROM (
            SELECT DISTINCT UstrojstvenaJedinicaId
            FROM AllContracts
            WHERE IsDeleted = 0
        ) AS DistinctUnits
        HAVING COUNT(*) = 1 AND MAX(UstrojstvenaJedinicaId) = 'HCPHS'
    )
);

注意事项

  1. 使用UNION ALL时,务必保证所有子查询返回的列数量、数据类型完全匹配;
  2. 如果UstrojstvenaJedinicaId是字符串类型(比如VARCHAR(20)),记得同步修改@zavodId的类型,避免类型转换错误;
  3. 相比在C#应用层先判断再执行不同查询的方式,这个方案把判断逻辑直接放到数据库层,减少了应用层与数据库的交互次数,性能更优。

内容的提问来源于stack exchange,提问作者user7512602

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:19:38