回答

收藏

SQL Server 2008-拆分

技术问答 技术问答 85 人阅读 | 0 人回复 | 2023-09-13

我们如何在列中使用交叉应用和拆分值?- s" w2 s  ?, d/ I8 K
我有一个函数dbo.split,它基于逗号将值分成单独的列7 k: a3 G4 p4 o3 p
Id         Name      Value  
! B4 \  a, ]7 b# k1234    A     6767  $ l  n  P$ ^2 x" f" @
1234    A     6767,1111   4 S( b) P% X  I  G' t
5678    A     6767  1 K. Q& v8 h, k' K' T
5678    A     6767,1111  ; A: X4 G' L/ x4 T& i/ G
9999    A     67673 u; Z+ e+ w7 Y. T( P# t
请帮助SQL查询进行交叉申请,也请使用拆分功能, m, p3 y0 J3 {6 \$ z( L
谢谢
6 [1 m# V5 M/ T! A3 K- y3 A8 L. U               
* e# n3 s+ x8 Q6 A  r+ J解决方案:
. |* u/ R% G$ i- t7 T; Z- t                ; T$ |2 x6 B, k8 r

% C/ H9 \& G. Y! @/ y; s5 M' u4 v% _  T. k; {, ~8 Q0 |. j
                您可以使用CROSS APPLY将拆分功能与列作为参数一起使用。
& @: w( V+ \" SSELECT pd.contentnodeid,+ x  e8 V. g3 @
       pt.name,
3 W2 \) P$ \2 u! i9 @       s.Value2 N" T) T3 s  x
FROM   vw_abc pd
# l/ J5 F0 h6 n# H8 t7 ~3 Y/ I       INNER JOIN propertytype pt% ^. i& h) _  @, i9 V
         ON pd.propertytypeid = pt.id$ E# R) p7 t9 K4 s1 j  \/ f( G
       INNER JOIN tab t4 N1 E+ h# f0 ?# q4 J
         ON t.id = pt.tabid! B9 v6 e+ Q4 i3 q, `+ M
       INNER JOIN contenttype ct' v# W2 D. v3 z0 i: B
         ON ct.nodeid = pt.contenttypeid! |1 T6 j: \* D4 d9 [( C& K8 V4 R
       INNER JOIN propertytype pt1
, S: `7 n/ p2 D; |, W         ON pt1.name = pt.name7 H  g' ^/ q6 x  c! v' N9 t
       INNER JOIN vw_abc pd15 i: S* m7 f, u5 X& _' _
         ON pd1.propertytypeid = pt1.id
. H: ^* W% d5 N: A, H& B       CROSS APPLY dbo.split(',', pd1.datanvarchar) as s
3 ~0 n  B. g7 l2 U/ eWHERE  t.TEXT LIKE 'ANC'
* [  Q+ o/ ]# _: m- m' J       AND pd1.datanvarchar  'NULL'
5 M5 w) e. U+ O       AND pd1.datanvarchar  ''# }5 L, l2 ]5 Y. s! V
       AND pd.datanvarchar LIKE '%'
8 O/ _' M4 V* a, ?- d6 z! R       AND pd1.datanvarchar LIKE '%'
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则