【问题标题】:SQL Server query to retrieve data from two tables with multiple conditionsSQL Server 查询以从具有多个条件的两个表中检索数据
【发布时间】:2016-08-05 06:44:58
【问题描述】:
我有两张桌子,Table1 和 Table2。
Table1 有以下列
- 日期
- u_id
- t_id
- col_t1_a
- col_t1_b
- col_t1_c
而Table2 有以下列
- 日期
- ux_id
- tx_id
- col_t2_a
- col_t2_b
- col_t2_c
Table1.u_id 是 Table2.ux_id 和 Table1.t_id = Table2.tx_uid 的子串。
当以下所有条件都为真时,我正在尝试从 Table2 中获取所有列 (col_t2_c)
- Table1.t_id = Table2.tc_uid 和
- substring(Table2.ux_id,7,6) = Table1.u_id 和
- Table1.date = Table2.date = 'yymmdd' 和
- Table1.col_t1_a = 'A' 和
- Table1.col_t1_b = 'B' 和
- Table1.col_t1_c = 'C'
在编写 SQL Server 2008 查询以实现上述目标时,我需要一些帮助。
任何帮助将不胜感激。
【问题讨论】:
标签:
sql-server
sql-server-2008
【解决方案1】:
试试这个查询:
SELECT *
FROM Table2 T2
INNER JOIN
Table1 T1 ON T1.t_id = T2.tx_uid
AND T1.u_id = substring(t2.ux_id, 7, 6)
AND T1.[Date] = T2.[Date]
WHERE
T1.[date] = 'date'
AND T1.col_t1_a = 'A'
AND T1.col_t1_b = 'B'
AND t1.col_t1_c = 'C'
【解决方案2】:
你所有的条件都已经写好了。只需将它们放入查询中:
SELECT t2.col_t2_c
FROM Table2 t2
INNER JOIN Table1 t1
ON t1.t_id = t2.tc_uid and
substring(t2.ux_id,7,6) = t1.u_id and
t1.date = t2.date
WHERE
t2.date = 'yymmdd' and
t1.col_t1_a = 'A' and
t1.col_t1_b = 'B' and
t1.col_t1_c = 'C'
【解决方案3】:
SELECT *
FROM Table1 t1, Table2 t2
WHERE t1.t_id = t2.tx_uid
AND t1.u_id = substring(t2.ux_id,7,6)
AND t1.date = t2.date
AND t2.date = 'yymmdd'
AND t1.col_t1_a = 'A'
AND t1.col_t1_b = 'B'
AND t1.col_t1_c = 'C'