【发布时间】:2020-09-30 23:15:15
【问题描述】:
我在表中有以下数据,这是从具有多列的表中显示的单列,但只有来自该列的数据需要使用查询拉入两列输出:
+----------------+--+
| DataText | |
| 1 DEC20 DDD | |
| 1 JUL20 DDD | |
| 1 JAN21 DDD | |
| 1 JUN20 DDD500 | |
| 1 JUN20 DDD500 | |
| 1 JUN20DDDD500 | |
| 1 JUN20DDDD500 | |
| 1 JUL20 DDD800 | |
| 1 JUL20 DDD800 | |
| 1 JUL20DDDD800 | |
| 1 JUL20DDDD400 | |
| 1 JUL20DDDD400 | |
+----------------+--+
所需结果:基于数据的前 13 个字符的不同值,根据“长数据”和“短数据”分为两列,但仅在输出中为两列提供前 13 个字符:
+-------------+-------------+
| ShortData | LongData |
| 1 DEC20 DDD | 1 JUN20 DDD |
| 1 JUL20 DDD | 1 JUN20DDDD |
| 1 JAN21 DDD | 1 JUL20 DDD |
| | 1 JUL20DDDD |
+-------------+-------------+
类似:
Select
(Select DISTINCT LEFT(DataText,13)
From myTable)
Where LEN(DataText)=13) As ShortData
,
(Select DISTINCT LEFT(DataText,13)
From myTable)
Where LEN(DataText)>13) As LongData
如果可能,我还想只查询/“扫描”一次表。我无法修改任何 SO 示例以使此类查询正常工作。
【问题讨论】:
标签: sql sql-server string tsql pivot