SQL子查询同步和参数

时间:2016-02-17 12:04:35

标签: sql ms-access subquery

我有以下查询,它不起作用:

SELECT 
    d1.*, iif(d1.PK = MIN(d2.PK), "Si", "No") 
FROM 
    demo AS d1 
LEFT JOIN 
    (SELECT d3.PK, d3.place, d3.date 
        FROM 
            demo AS d3 
        WHERE 
            d3.place=d1.place AND d3.date=d1.date AND d1.type="type1") AS d2 
ON 
    d2.place=d1.place AND d2.date=d1.date

关键是用“Si”标记演示表中具有混凝土类型的第一行,并且在相同的位置/日期,具有相同值的其他行应标记为“否”。似乎子查询无法识别de“d1”名称以正确同步,如果我证明将“d1”值更改为常量那么就存在关于PK和我不理解的聚合函数的错误。

抱歉,如果显而易见,但SQL不是我最强的观点。谢谢你的帮助:)

1 个答案:

答案 0 :(得分:0)

改为使用相关子查询:

select d.*,
       iif(d.pk = (select min(d2.pk)
                   from demo as d2
                   where d2.place = d1.place and d2.date = d1.date and d2.type = "type1"),
          "Si", "No")
from demo as d;