我有两张这样的表
Person_table
| person_id | name | surname
--------------------------------
1 | name1 | surname1
--------------------------------
2 | name2 | surname2
--------------------------------
3 | name3 | surname3
insurance_table
ins_id |person_id | insurance_type |
-------------------------------------
001 | 1 | 5% |
-------------------------------------
002 | 1 | 10% |
-------------------------------------
003 | 3 | 2% |
加入后如下
select pt.*, it.insurance_type
from person_table pt
join insurance_table it on it.person_id=pt.person_id
查询返回person_id = 1的重复行。 像这样
| person_id | person_name | insurance_type |
----------------------------------------------
| 1 | name1 | 5% |
-----------------------------------------------
| 1 | name1 | 10% |
重点是根据保险类型为每个id返回一行,并添加其他列,如此
| person_id | person_name | type 1 | type2 | type3 |
----------------------------------------------------------------------------
1 | name1 | 5% | 10% | null |
----------------------------------------------------------------------------
2 | name2 | null | null | 2% |
是否可以在不编写pl过程的情况下实现这样的查询。 非常感谢!
答案 0 :(得分:1)
如果我理解,您希望获得不同类型保险的人。如果我们只有3种类型,它看起来像你需要简单的解码
extension Int {
enum Kind {
case negative, zero, positive
}
var kind: Kind {
switch self {
case 0:
return .zero
case 1...Int.max:
return .positive
default:
return .negative
}
}
}
答案 1 :(得分:0)
如果id = 1的人只在表“insurance_table”中存在一次,则查询结果与id = 1的人的记录不一致。
如果您的insurance_table只有2列(person_id和insurance_type),则无法使用3种类型生成结果。 如果此表有第三列,那么您可以使用union语句,并为每个查询另外使用insurance_table的where子句。
答案 2 :(得分:0)
好的,那是我怎么做的:
$dt = new DateTime('2016-10-16T22:12:45.104Z');
$helper = $dt->format('u'); //this is factor of 1000 off
$helper /= 1000
$ans = $dt->format('Y-m-d\TH:i:s'); //get the first part of what you
$ans .= "." . $helper . "Z"; //add the milliseconds back on, and Z for good measure
echo $ans . "\n";
我不知道的是,百分比是否属于"属性"保险或"名称" /"密钥"保险类型(在后一种情况下,我不需要添加" ins_id"列。)