我的代码目前如下所示......
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日的结果,因为它导致我必须在输出后进行大量的手动编辑。谢谢!
答案 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)