2010-12-30 32 views
3

私は修正済みのユーザーがいます。28 CheckList日常的にユーザーがすべてのチェックリスト項目の値を入力する必要がある項目。件名照会ヘルプが必要です

ユーザが部分的に入力したり、不完全なままにしておくと、チェックリストを完全に残したり、部分的に入力したことを示す必要があるため、デフォルトでは0になるtrans_statusというフィールドを維持します。ユーザーがデータを一度入力すると値は1になり、28の項目は1と0が混在していることを意味します。28の項目がすべて0の場合はINCOMPLETE、1の場合はCOMPLETEDを意味します。ここで

は構造

CREATE TABLE [dbo].[VTRCheckListDetails](
    [userid] [int] NULL, 
    [branchid] [int] NULL, 
    [vtrRespDate] [date] NULL, 
    [CLid] [int] NULL, 
    [VtrValue] [varchar](5) NULL, 
    [trans_status] [int] NULL, 
    [last_updated] [int] NULL 
) ON [PRIMARY] 

であり、ここで何をしたいサンプルデータ

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','1','1','1','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','2','2','0','0')  

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','3','3','0','0')  

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','4','4','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','5','5','0','0')  

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','6','6','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','7','7','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','8','8','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','9','9','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','10','10','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','11','11','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','12','12','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','13','13','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','14','14','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','15','15','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','16','16','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','17','17','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','18','18','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','19','19','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','20','20','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','21','21','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','22','22','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','23','23','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','24','24','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','25','25','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','26','26','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','27','27','0','0') 

INSERT VTRCheckListDetails(userid,branchid,vtrRespDate,CLid,VtrValue,trans_status,last_updated)  VALUES('144','14','2010-12-30','28','28','0','0') 

である私は、日付のクエリそれが必要グループを実行して、に基づいて、このようなデータを表示する場合でありますtrans_status

Date.............Status 
30-12-12..........Partial (can be complete, incomplete) 
+2

+1有用なDDLの場合。 –

+0

2番目の段落で文法や句読点を使用してください。私はあなたが求めていることを理解するのに困っている。 –

+0

...多分私はあまりにも早く話しましたが。日付カラムに '0'を挿入しています(' last_updated')。私のために働かない。私の貧しい英語のための –

答えて

2
SELECT vtrRespDate, 
     CASE COUNT(CASE trans_status WHEN 1 THEN 1 END) 
     WHEN 0 THEN 
       'Incomplete' 
     WHEN COUNT(*) THEN 
       'Complete' 
     ELSE 
       'Partial' 
     END AS Status 
FROM VTRCheckListDetails 
GROUP BY 
     vtrRespDate 
+0

Quassnoi bravooooooooooooo ...素敵でシンプルな...偉大なクエリのおかげで多くの感謝 – user342944

+0

ニース?他の人がいなくても?しかし、私は面白いと認めます。それをCASE SUM(ケースtrans_status WHEN 1 THEN 1 ELSE 0 END)にします。 –

+0

@bernd_k:ELSE NULLを省略すると、ELSE NULLが暗示されます。 – Quassnoi

3
SELECT userid  , 
     vtrRespDate, 
     CASE 
        WHEN MAX(trans_status) = 0 
        THEN 'InComplete' 
        WHEN MIN(trans_status)=1 
        THEN 'Complete' 
        ELSE 'Partial' 
     END AS status 
FROM  VTRCheckListDetails 
GROUP BY userid, 
     vtrRespDate 
+0

ああ、captchaと汚れたインターネット接続で疲れた! –

+0

Martinあなたのお問い合わせは、すばらしい仕事をしています... nice :)貴重なクエリのためにマーティンに感謝します。私は自分のSQLをより良いものにすることができればと願っています:) – user342944

+0

+1。インデックスを使用すると、私よりも効率的になります。 – Quassnoi

関連する問題