【问题标题】:insert data in datatable with sql query使用sql查询在数据表中插入数据
【发布时间】:2013-09-05 07:35:46
【问题描述】:

我有这样的查询(从 myTable 中选择 id、reffid、someData):

id reffid someData 8 10 文本1 9 10 文本2 10 11 文本3 11 11 文本4 12 11 文本5 13 11 文本6 14 12 文本7 15 12 文本8 16 12 文本9 17 13 文本10 18 14 文本11

我需要执行以下操作的查询:如果我有少于 4 个具有相同值的 reffid,则添加具有相同 reffid 的行并在 someData 添加 -。结果查询应如下所示:

id reffid someData 8 10 文本1 9 10 文本2 ??? 10 - ??? 10 - 10 11 文本3 11 11 文本4 12 11 文本5 13 11 文本6 14 12 文本7 15 12 文本8 16 12 文本9 ??? 12 - 17 13 文本10 ??? 13 - ??? 13 - ??? 13 - 18 14 文本11 ??? 14 - ??? 14 - ??? 14 -

如何做到这一点?

【问题讨论】:

  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?

标签: sql


【解决方案1】:

试试

SELECT t.id, l.reffid, COALESCE(t.somedata, '-') someData
  FROM
(
  SELECT reffid, rnum
    FROM
  (
    SELECT DISTINCT reffid
      FROM table1
  ) q CROsS JOIN 
  (
    SELECT 1 rnum UNION ALL
    SELECT 2 UNION ALL
    SELECT 3 UNION ALL
    SELECT 4
  ) n
) l LEFT JOIN 
(
  SELECT id, reffid, somedata, 
         ROW_NUMBER() OVER (PARTITION BY reffid ORDER BY id) rnum
    FROM table1
) t
   ON l.reffid = t.reffid
  AND l.rnum   = t.rnum

输出:

|身份证 |重新购买 |一些数据 | |--------|--------|----------| | 8 | 10 |文本1 | | 9 | 10 |文本2 | | (空) | 10 | - | | (空) | 10 | - | | 10 | 11 |文本3 | | 11 | 11 |文本4 | | 12 | 11 |正文5 | | 13 | 11 |正文6 | | 14 | 12 |正文7 | | 15 | 12 |正文8 | | 16 | 12 |正文9 | | (空) | 12 | - | | 17 | 13 | text10 | | (空) | 13 | - | | (空) | 13 | - | | (空) | 13 | - | | 18 | 14 | text11 | | (空) | 14 | - | | (空) | 14 | - | | (空) | 14 | - |

这里是SQLFiddle演示

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多