是否根据值更改选定列的数目?

2024-10-04 01:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个sqlite数据选项卡,其中包含许多状态列,随着产品在不同阶段的移动,这些状态列会得到更新。我想根据列status value==1扩展数据表的选定列,例如,如果列1 status==1我想选择列2,如果列3 status==1我想通过另外选择列4和列5扩展选择,如果列6 status==1我想用列7进一步扩展选择。否则,如果只有第1列状态==1,则只选择第2列;如果第3列状态==1,则只选择第4列和第5列,反之亦然。sqlite可以这样做吗?
我的数据表:

'CREATE TABLE IF NOT EXISTS wetweighscan_tb\
                    wet_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\
                    emp_id INTEGER NOT NULL,\
                    printed INTEGER NOT NULL DEFAULT "0",\
                    dtetime_printed TEXT NULL,\
                    first_scan INTEGER NOT NULL DEFAULT "0",\
                    block_id INTEGER NULL,\
                    frm_id INTEGER NULL,\
                    nature TEXT NULL,\
                    firstscan_emp_datetime TEXT NULL,\
                    second_scan INTEGER NOT NULL DEFAULT "0",\
                    weight REAL NULL,\
                    secondscan_emp_datetime TEXT NULL,\
                    user_id INTEGER NOT NULL,\
                    entity_id INTEGER NOT NULL,\
                    longitude REAL NULL,\
                    latitude REAL NULL,\
                    syncstatus INTEGER NOT NULL DEFAULT "0"'

这就是我目前的情况:

SELECT wet_id,
       emp_id, 
       user_id,
       entity_id
       CASE printed 
           WHEN 0 
               THEN select dtetime_printed 
       CASE first_scan
           WHEN 0
               THEN select block_id, frm_id, nature, firstscan_emp_datetime, longitude, latitude
       CASE second_scan
           WHEN 0
              THEN select weight, secondscan_emp_datetime

           ELSE null 
       END Wetscan
FROM 
    wetweighscan_tb;

但这不起作用。

编辑:所以我从另一个角度看它,并创建了所有select查询,我想一次运行,而主键上没有重复的查询:

select * from wetweighscan_tb 
    WHERE printed = 1 and first_scan = 1 and second_scan = 1;

select wet_id, emp_id, user_id, entity_id,printed,dtetime_printed from wetweighscan_tb 
    WHERE printed = 1 and first_scan = 0 and second_scan = 0;

select wet_id, emp_id, user_id, entity_id,printed,dtetime_printed, first_scan, block_id, frm_id, nature, firstscan_emp_datetime, longitude, latitude from wetweighscan_tb 
    WHERE printed = 1 and first_scan = 1 and second_scan = 0;

如何使这三个查询成为一个逻辑查询


Tags: andiddatetimescan状态notintegerselect