query_prod.py 2.06 KB
import pymssql

conn = pymssql.connect(
    server='192.168.1.168',
    port=1433,
    database='wms4_global',
    user='sa',
    password='HHrobot123.'
)
cursor = conn.cursor(as_dict=True)

# 统计:头表status=50但详情不一致的数据(排除BMR/DBR/QTR等类型)
sql = """
SELECT
    COUNT(*) as total_count,
    SUM(CASE WHEN d.status IS NULL THEN 1 ELSE 0 END) as detail_null_count,
    SUM(CASE WHEN d.status = 0 THEN 1 ELSE 0 END) as detail_status_0,
    SUM(CASE WHEN d.status = 20 THEN 1 ELSE 0 END) as detail_status_20,
    SUM(CASE WHEN d.status = 50 THEN 1 ELSE 0 END) as detail_status_50,
    SUM(CASE WHEN h.status = 50 AND (d.status IS NULL OR d.status != 50) THEN 1 ELSE 0 END) as will_update_count
FROM receipt_container_header h
INNER JOIN receipt_container_detail d ON d.receipt_container_id = h.id
INNER JOIN receipt_header r ON r.id = d.receipt_id
WHERE
    h.status = 50
    AND NOT (h.status = 50 AND d.status = 50)
    AND NOT (h.status = 0 AND d.status = 0)
    AND r.type NOT IN ('BMR', 'DBR', 'QTR', 'SCR', 'CPR', 'BCPR', 'YCLR', 'QTRKD')
"""
cursor.execute(sql)
row = cursor.fetchone()
print('=== 影响统计(头表status=50且需要同步到详情的)===')
for k, v in row.items():
    print(f'  {k}: {v}')

# 样例数据
cursor.execute("""
SELECT TOP 5
    h.id AS header_id,
    h.status AS header_status,
    d.id AS detail_id,
    d.status AS detail_status,
    d.receipt_id,
    r.type AS receipt_type,
    r.code AS receipt_code
FROM receipt_container_header h
INNER JOIN receipt_container_detail d ON d.receipt_container_id = h.id
INNER JOIN receipt_header r ON r.id = d.receipt_id
WHERE
    h.status = 50
    AND NOT (h.status = 50 AND d.status = 50)
    AND NOT (h.status = 0 AND d.status = 0)
    AND r.type NOT IN ('BMR', 'DBR', 'QTR', 'SCR', 'CPR', 'BCPR', 'YCLR', 'QTRKD')
""")
print()
print('=== 样例数据 ===')
for row in cursor:
    print(f'  header_id={row["header_id"]} detail_id={row["detail_id"]} header_status={row["header_status"]} detail_status={row["detail_status"]} type={row["type"]} receipt={row["receipt_code"]}')

conn.close()