0

私のテーブルは次のようになります

Regno      Date       Year Batch h1   h2   h3  h4    h5   Att
1138M0345  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0346  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0347  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0348  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0349  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0350  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0351  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0352  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0353  25-07-2013  3    1    P    P    P  NULL  NULL  NULL
1138M0343  25-07-2013  3    1    A    A    A  NULL  NULL  NULL
1138M0344  25-07-2013  3    1    A    A    A  NULL  NULL  NULL

フィールドh1、h2、h3、h4、h5、および att には、null 値を格納できます 。att フィールドは、その日の生徒の出席を格納するためのものです。次の条件の下で、フィールドattP/A/1/2で更新する必要があります

1. 'P' if H1 through H5 contains 'P' (Meaning present for the whole day)
2. '1' if H1 through H3 contains 'P' (Meaning present for the first session)
3. '2' if H4 and H5 contains 'P' (Meaning present for the second session)
4. NULL if any of H1 through H5 contains NULL (Meaning table needs to be updated completely)
5. Else 'A' (Meaning absent for the whole day)

誰でもロジックを手伝ってもらえますか

4

4 に答える 4

1

指定された日付範囲のテーブルを更新するクエリを次に示します

DECLARE @StartDate datetime
DECLARE @EndDate datetime

SET @StartDate = '07/01/2013'
SET @EndDate = '07/26/2013'

UPDATE StudentAttendance
SET Att = 
 (
    CASE
       WHEN (H1 is null) or (H2 is null) or (H3 is null) (H4 is null) (H5 is null) THEN NULL
       WHEN H1='P' and H2='P' and H3='P' and H4='P' and H5='P' THEN 'P'
       WHEN H1='P' and H2='P' and H3='P' THEN 'P'
       WHEN H4='P' and H5='P' THEN 'P'
       ELSE 'A' 
    END
)
WHERE Date BETWEEN @StartDate and @EndDate
于 2013-07-26T09:11:40.817 に答える
0

SQLクエリを書くこともできます

select [Regno], [Date], [Year], [Batch] as KEY,
case 
when 
(ISNULL(H1,'')='' OR ISNULL(H2,'')='' 
OR ISNULL(H3,'')='' OR ISNULL(H4,'')='' 
OR ISNULL(H5,'')='') THEN NULL
when (H1='P' and H2='P' and H3='P' and H4='P' and H5='P') THEN 'P'
when (H1='P' and H2='P' and H3='P') THEN 'P'
when (H4='P' and H5='P') THEN 'P'
ELSE 'A' END as APP
from Table1

SQL フィドル

于 2013-07-26T05:09:12.167 に答える
0

機能したクエリは

UPDATE student_attendance_table SET att = 
  CASE 
    WHEN (h1 IS NULL) or (h2 IS NULL) or (h3 IS NULL) or (h4 IS NULL) or (h5 IS NULL) THEN NULL 
    WHEN h1='P' and h2='P' and h3='P' and h4='P' and h5='P' THEN 'P' 
    WHEN h1='P' and h2='P' and h3='P' THEN '1' 
    WHEN h4='P' and h5='P' THEN '2' 
    ELSE 'A' 
  END 
WHERE regno='" & reg & "' AND date='" & dtp1.Text & "' AND year=" & year & " AND batch= " & batch &"
于 2013-07-27T03:44:46.857 に答える
0

最初に値をフェッチしてテーブルに挿入する場合、特定の学生 (p、a、1/2.. のいずれであるか) の値を見つけるロジックを記述し、見つかった値を更新するために SQL 部分を開始します。 SQLクエリで....

1138M0345 の att を更新すると言う

  • select ... whereregNo = '1138M0345' および Date ='ur date'を使用してそのレコードを取得します
  • conditionステートメントの P、A、1、および 2 の可能性を確認してください
  • 前のステップの結果を保存し、クエリを閉じます
  • 別のクエリを開き(ほとんどの場合、 where regNo = でステートメントを更新します1138M0345)、「att」を更新します
于 2013-07-26T05:29:50.520 に答える