在多个链接条件下使用IN - SQL

时间:2017-01-30 14:20:03

标签: sql-server

我的代码目前如下所示......

SELECT DISTINCT
    CLIENT.FIRST_NAME,
    CLIENT.LAST_NAME,
    DATE_DIM.DATE
FROM
    DW.DBO.TEST
WHERE
    CLIENT.ID1 IN (A1, A2, A3, A4, A5)
AND
    DATE_DIM.DATE IN (1/11/2015, 1/12/2015, 1/13/2015, 1/14/2015, 1/15/2015)

我想知道有什么办法可以将这两个条件联系起来吗? I.E.我不希望客户端id1 A1链接到2015年1月12日的结果,因为它导致我必须在输出后进行大量的手动编辑。谢谢!

1 个答案:

答案 0 :(得分:2)

是的,只需将其放入桌面或即时制作

即可
SELECT DISTINCT
    CLIENT.FIRST_NAME,
    CLIENT.LAST_NAME,
    DATE_DIM.DATE
FROM DW.DBO.TEST
JOIN CLIENT -- you didn't include this part
JOIN DATE_DIM -- you didn't include this part
JOIN (
   SELECT 'A1', '1/11/2015'
    UNION ALL
   SELECT 'A2', '1/12/2015'
    UNION ALL
   SELECT 'A3', '1/13/2015'
    UNION ALL
   SELECT 'A4', '1/14/2015'
    UNION ALL
   SELECT 'A5', '1/15/2015'
) AS TMP(ID, D) ON CLIENT.ID1 = TMP.ID AND DATE_DIM.DATE = TMP.D
  

我修改了你的代码,因为你包含了你没有定义的TABLES和非法常量 - 我只是为这个例子创建了一个字符串。

某些平台(DB2和Oracle - 我肯定知道)你可以在IN子句中使用元组....看起来像这样:

WHERE (CLIENT.ID, DATE_DIM) IN ( -- list of tuples here or select statement)