使用SQL

时间:2017-01-20 22:20:39

标签: sql ms-access

所以我有一些看起来像这样的数据

Table 1:
MemberID  BinaryIndicator PrescriptionMonth
   01           1               4
   01           2               8
   02           2               6
   02           1               6
   03           1               9
   04           1               10 
   05           2               5

我想提出两个问题。在第一个中,我想要将出现多次的BinaryIndicator的{​​{1}}更改为1.在第二个查询中,我希望将指标更改为ID的最高{{} 1}}字段值。如果它结合,则MemberID将更改为1.例如,ID为01的成员将其PrescriptionMonth的所有内容更改为2. ID 02将BinaryIndicator更改为BinaryIndicator到1。

我尝试获取包含多次显示且具有不同BinaryIndicator的记录的表的子集,将其命名为BinaryIndicator。然后我做了以下查询:

Table2

哪个不起作用。我也不知道如何编写第二个查询。

任何想法,建议将不胜感激。我的经历非常有限 在Access / SQL中,我甚至不知道了解这些= /的好消息来源。任何指导学习/练习的地方也将不胜感激!

2 个答案:

答案 0 :(得分:0)

第一个查询:

SELECT t.MemberId,
       CASE WHEN COUNT(*) OVER (PARTITION BY t.MemberId) > 1 THEN 1
           ELSE t.BinaryIndicator END BinaryIndicator,
       t.PrescriptionMonth
FROM table1 t;

我不确定你在第二个查询中想要什么。将在评论中提出......

答案 1 :(得分:0)

第一个

UPDATE Table1
SET Table1.BinaryIndicator = 1
WHERE Table1.MemberID IN (SELECT Table1.MemberID 
FROM Table1
GROUP BY Table1.MemberID
HAVING COUNT(1) > 1)
AND Table1.BinaryIndicator != 1